1. 리덕스가 필요한 이유
- 자식 → 부모의 데이터 바꾸기 : 메서드를 한 단계 내려줘서 바꾼다.
- 부모 → 자식의 데이터 바꾸기 : 읽기 전용이기 때문에 바꿀 수가 없다.
- 그런데 부모와 자식의 관계가 복잡하다면 state, props를 반복해서내려주고 올려줘야 할 것이다. 이러한 불편을 감소하기 위해서 리덕스를 사용한다.
2. 관련 용어
action : 어떻게 바꿀지에 대한 행동을 적어준 객체이다.
- 기존 state를 어떻게 바꾸고 싶은 지 생각하면 된다.
dispatch : 액션을 실행한다.
reducer: 액션이 실행 될 때, 새로운 객체를 만들어주는 함수이다. (== 기존 객체를 대체한다) 액션과 리덕스는 한 세트라고 생각해주면 된다.
subscribe : 리액트 리덕스에 들어있는데, 화면을 바꿔주는 기능을 한다. 그런데 보통 리액트와 리덕스를 함께 사용할 때는 거의 사용하지 않는다. (실무에서 볼 일 없음)
3. 장점
- 모든 것이 기록된다 → 에러 발생 시 유연한 대처 가능
- 특정 순간으로 되돌릴 수 있다 → 역시 유연한 대처 가능
4. 단점
- state의 불변성을 지켜줘야 한다. (Reducer) 즉, 매번 state 객체를 새로 만들어야 한다. (안정성과 추적 가능성을 보장하기 위해)
- action을 미리 정의해줘야 한다.
5. 실습 - 리덕스로 이름 바꾸기, 나이 바꾸기