개념정리 - Redux (1)

Seungmin Shin·2021년 6월 7일
1

코딩 개념정리

목록 보기
14/33

Redux

1. Redux 소개

Redux는 자신을 이렇게 소개한다.

" A predictable state container for JavaScript apps. "

이 뜻은, 자바스크립트로 만든 어플리케이션들을 위한 예측가능한 상태의 저장소 이다,

우리가 소프트웨어를 개발할 때 우리에게 가장 위협이 되는것은 바로 복잡성 이다.

복잡성이 위험한 이유는, 눈에 보이지 않기 때문이다,

이 복잡성은 조용하게 개발자들을 슬럼프에 빠지게 만들기도 하고,

개발자와 경영자의 사이를 이간질시켜 멀어지게 하기도 한다.

그리고 엄청난 자본을 투자한 프로젝트들을 무산시키기도 한다.

그럼 우리는 이런 상황에서 어떤 해결책을 꿈꿀까?

간단하다, 바로 코드 복잡성을 낮추는것이다.

그래야만 더욱 복잡한 어플리케이션을 개발할 수 있을테니 말이다.

Redux는 어플리케이션의 복잡성을 현저하게 낮춰서 우리가 만드는 코드가 어떤 결과를 가져올지

예측가능하게 만드는 도구이다. 어떻게 이런게 가능한것일까?

2. Redux 의 특징

1) Single Source of Truth.

'Redux는 단 하나의 상태만을 갖는다' 라는 특징이 있는데 상태라는것이 너무 어려운것은 아니다.

단순하게 상태는 그냥 '객체 ( {} )' 이다.

그래서 하나의 객체 안에 어플리케이션에 필요한 모든 데이터를 집어넣는것을 통해서

Redux는 어플리케이션의 복잡성을 한번 낮추게 된다.

무슨말일까 싶기도 하지만 단순하게 생각해본다면,

여러곳에 흩어져있는 데이터를 관리하는 것 보다는 한곳에 응집되어 있는 데이터를 관리하는게

더 효율적일것이라고 생각하면 이해가 되지 않을까 싶다.

2) 직접적인 수정이 불가하다.

그리고 이 상태 (State)는 굉장히 중요하기 때문에 외부로부터 철저하게 보호된다.

그래서 외부로부터 수정되는것이 불가능한데, 그것을 가능하게 만드는 몇가지 요소가 있다.

오로지 그것들로만 이 상태는 관리된다. dispatch 또는 reducer 등으로 사용가능하다.

우리가 하고자하는 (입력, 변경) 등을 Redux에게 전달해 주면, Redux가 그 정보를 받아

State를 변경한다. 우리가 직접적으로 바꾸는것이 아니다. 데이터를 가져오는것도 마찬가지이다.

이런 형식이기에 데이터를 외부로부터 직접적으로 제어할 수 없도록 만들어서

의도하지 않게, 예기치 않게 State가 바뀌는 문제를 사전에 차단함으로써

어플리케이션을 보다 ' 예측가능하게 ' 만드는것이다.

그리고 State가 바뀔때마다 State를 사용하는 어플리케이션 부품들에게 그 사실이 전달되며

각각의 부품들은 서로에게 신경쓸 필요없이 자신의 일만 하면 된다.

그렇게 되면 어플리케이션을 만들면서 훨씬 적은 정신적인 소비를 하게 된다.

3) UNDO , REDO.

UNDO 와 REDO 는 각각 이런 뜻을 가지고 있다.

UNDO: 방금전에 했던 일을 취소.
REDO: UNDO로 취소했던 일을 다시 하라.

갑자기 이 이야기가 왜 나오냐면, Redux의 특징 중 하나가 이것이다.

각각의 상태값들을 생성할때 철저하게 통제하고, 데이터를 만들때 원본을 바꾸는것이 아니라

원본을 복제하여 그 복제한 데이터를 수정하여 새로운 원본으로 만드는 방법을 쓰고있다.

그렇기 때문에 각각의 상태변화가 서로에게 영향을 전혀 끼치지 않는 독립적인 형태를 유지할 수 있고,

이러한 특징을 잘 이용하면 UNDO,REDO 와 같이 어플리케이션의 상태를 바꾸는것을

매우 쉽게 처리할 수 있다.

그리고 우리가 Debugger를 통해 어플리케이션의 현재상태를 볼 수 있다면,

Redux는 우리가 현재상태뿐만 아니라 이전상태까지도 꼼꼼히 레코딩을 하여

과거의 어느 시점으로 돌아가 그 시점의 어플리케이션의 상태를 확인 할 수 있어

문제해결을 더욱 쉽게 할 수 있다.

profile
Frontend Developer

0개의 댓글