action
상태를 어떻게 바꿀지에 대한 행동 .
type 값은 필수.
payload : '교체할 상태 값'.
액션 타입을 별도 관리하는 파일을 만들어 상수(constant)로 관리하는 것이 유지 보수 하기 좋다
reducer
state,action을 매개변수로 받고 새로운 state를 반환 후 -> store로 전달.
Redux 의 3가지 규칙
1.하나의 애플리케이션엔 하나의 스토어만 있어야한다.
2.상태는 불변성을 유지해야한다. (좋은 성능을 지켜내기 위함)
객체를 참조해서 수정하지말자 member.isLoggedIn = true; (x)
read 만하자 (ㅇ)
이전의 state와 현재의 state가 달라야 추적가능.
참조관계가 유지된다면 history 가 안남는다.
3.리듀서는 초기 state와 action을 전달 받아 '이전 상태'를 '다음 상태'로 교체 한 후 반환한다.
주어진 상태를 수정하는 것이 아니라,
새로운 상태로 교체하는 것이 중요.
(이전상태,액션) => return 다음상태
즉, 리듀서는 반드시 '순수한 함수' 여야 한다.
순수 함수란?
순수 함수는 반환(reture) 값이 전달 인자 (argument) 값 에만 의존하는 함수를 말한다.
변형을 가하면 안된다
const aFunction = x => x * x (o)
const arrayFunction = items => items.map(square) (o)
순수하지 않은 함수는 데이터베이스 또는 네트워크 통신 및 DOM 조작과 같은 경우를 말한다.
리듀서(함수)는 순수해야 한다. 순수함을 잃어버리게 되면 사이드 이펙트를 발생시킬 수 있다.
- 전달 받은 매개변수 state, action에 변형을 가하면 안된다.-> 새로운 배열, 새로운 객체로 교체하자!
- 네트워킹(API 호출 ← 비동기 통신) 또는 라우팅을 변경하면 안된다.
- 반드시 반환 값은 새로운 상태(state)여야한다.
ducks 패턴
-리덕스 정리-
데이터를 중앙에서 관리한다. (중앙저장소)
데이터 조회,수정,추가,삭제 가능.
데이터를 바꾸려면 노예(액션)가 필요하다. (상태를 어떻게 무엇을 바꿀것인지에 대한 정보)
dispatch() --> 노예는 reducer(은행원)로 간다
reducer(은행원): 어떻게 작업할지 계산한다
'React' 카테고리의 다른 글
React Router (0) | 2021.08.02 |
---|---|
react-redux (2) | 2021.07.13 |
useReducer( ) (0) | 2021.07.08 |
deps에 관하여,useEffect( ),useMemo(),useCallback(),useState( ), (0) | 2021.07.07 |
Context API (0) | 2021.07.04 |