- App에서 모든 상태의 로직을 관리하고 있기 때문에 App 컴포넌트의 state를 업데이트하면 App 컴포넌트가 리렌더링되고, 리액트 특성상 하위 컴포넌트도 모두 리렌더링됩니다.
- 프로젝트가 복잡해질수록 상태 관리 로직이 너무 많아지고 컴포넌트의 코드 길이가 너무 길어지는 현상이 일어나므로 이것을 해결하고자 리덕스라는 상태 관리 도구를 사용하면 해결됩니다.
- 리덕스 : 상태관리의 로직을 컴포넌트 밖에서 처리하는것을 뜻합니다.
스토어 : 애플리케이션의 상태 값들을 내장하고 있다.
액션 : 상태 변화를 일으킬 때 참조하는 객체
디스패치 : 액션을 스토어에 전달하는 것을 의미
리듀서 : 상태를 변화시키는 로직이 있는 함수
구독 : 스토어 값이 필요한 컴포넌트는 스토어를 구독
- 규칙
1) 스토어는 단 한개, 그 대신 리듀서를 여러개 만들어서 관리 가능
2) 리덕스의 상태, state값은 읽기 전용, 이 값은 절대로 직접 수정하면 안된다.
3) 모든 변화는 순수 함수로 구성해야 한다. 여기서 함수란 리듀서 함수를 가리킨다. 순수 함수에서 결과 값을 출력할 때느 파라미터 값에만 의존해야 하며, 같은 파라미터는 언제나 같은 결과를 출력해야 한다.
ex) 리듀서 함수 내부에서 외부 네트워크와 데이터베이스에 직접 접근하면 안된다. 접근하다가 요청이 실패할수 도 있고, 외부 서버의 반환 값이 변할수도 있기때문이다. 그리고 리듀서 함수 내부에서는 현재 날짜를 반환하는 new Date() 함수나 Math.random() 함수 등도 사용하면 안된다.
'WEB > REACT' 카테고리의 다른 글
9. Immutable & Ducks & 예제 (0) | 2019.07.11 |
---|---|
8. 리덕스 활용 예제 (0) | 2019.07.09 |
6. 예제 - 일정관리 (0) | 2019.06.25 |
5. 리액트 컴포넌트 스타일링 방식 (0) | 2019.06.21 |
4. 컴포넌트의 라이플사이클 메서드 (0) | 2019.06.19 |