flux의 아쉬운 점
flux에서 Store는 2가지 역할을 담당한다.
•
state 저장소
•
state 변화 로직 수행
따라서 개발자가 개발하며 state 변화 로직을 수정하면기존에 저장되어 있던 state가 전부 새로고침되어 사라진다.
이러한 한계를 극복하기 위해 Redux가 등장했다
수많은 데이터를 페이지 컴포넌트에서 다룬다. 리듀서 형식으로 바꿀 수 있을듯
Redux의 장점
1.
어떤 컴포넌트라도 스토어의 어떤 상태든 접근할 수 있어서 props를 왔다갔다 전달할 필요가 없어지는 “중앙 스토어”다.
2.
중앙 집중식 스토어를 바라보는 또 다른 방식은 컴포넌트가 제거된 이후에도 컴포넌트의 상태를 유지하는 것이다.
3.
state가 변경되면 shallow copy를 사용하는 새로운 state를 반환하므로 불필요한 리렌더링을 방지한다.
4.
UI와 data management가 분리되어 있어서 테스트가 수월할 것이다.
5.
state의 history가 유지되어 실행취소와 같은 기능을 매우 쉽게 구현할 수 있다.
Redux의 단점
1.
encapsulation이 없다. 어떤 컴포넌트든 데이터에 접근할 수 있어서 보안 문제가 발생할 수 있다.
2.
Bolierplate 코드가 있고, 설계가 제한되어 있다.
3.
Redux에서 state는 immutable이다. reducer는 매번 메모리를 과도하게 사용할 수 있는 새로운 state를 반환함으로써 state를 업데이트한다.