redux의 세가지 규칙
1. store는 단 한 개
store는 언제나 단 한 개이다. 스토어를 여러 개 생성해서 상태를 관리 해선 안된다. 대신 reducer를 여러 개 만들어서 관리할 수 있다.
2. state는 읽기 전용
- redux의 상태, state값은 읽기 전용이다. 이 값은 절대로 수정 해서는 안된다!
- state를 업데이트할 때는 언제나 새로운 state 객체를 만들어서 넣어 주어야 한다! 이를 편하고 빠르게 되도록 도와주는 immutablejs, immer와 같은 라이브러리들이 있다.
3. 변화는 순수 함수로 구성
- 모든 변화는 순수 함수로 구성해야 한다. 여기에서 함수란 바로 reducer 함수를 가리킨다.
- 순수 함수에서 결과 값을 출력할 때는 파라미터 값에만 의존해야 하며, 같은 파라미터는 언제나 같은 결과를 출력해야 한다. 사이드 이펙드를 발생 시키면 안된다!
- 예를 들어 reducer 함수 내부에서 외부 네크워크나 DB에 직접 접근해서는 안된다. 요청이 실패할 수도 있고 서버 값이 변경될 수도 있기 때문이다.
- new Date(), Math.random() 함수 등도 사용해선 안된다!
react에 redux 적용 (ducks 구조)
ducks 구조에서 지켜야 할 규칙
- export default를 이용하여 reducer를 내보낸다.
- export를 이용해서 액션 생성 함수를 내보낸다.
- 액션 타입 이름은
counter/INCREMENT
와 같은 형식으로 만든다.
- 외부 reducer에서 모듈의 액션 타입이 필요할 경우 액션 타입을 내보내도 된다.