Redux
Vanilla Redux
Redux는
JavaScript Apps를 위한 상태관리 라이브러리(React에 의존하지 않음)Mutating(변경) State XXX, return new State Objects OOO
특징
한 곳에 데이터를 중앙집중적으로 관리함으로 인해 복잡성을 낮춤
데이터를 제어할 때는 반드시 함수를 통함으로 인해 예측 불가능한 데이터 변경을 예측 가능하게 만듬
UNDO와 REDO를 손쉽게 할 수 있음
Store and Reducer
데이터(state)를 넣는 곳
State에 직접 접속하는 것은 금지되어 있음
createStore(reducer): store는 reducer를 요구함reducer: data를 modify하는 function, return datadata를 변경할 수 있는 유일한 곳
const countModifier = (state = 0) => { return state; }; // state가 initial되지 않으면 undefined를 반환 // state = 0 은 맨 처음 data를 initial하는 것 // state는 currentStatestore.getState(): return하는 data를 가져옴
Actions
action: redux에서 function(reducer)을 부를 때 쓰는 두번째 parameter or argumentreducer와 소통하기 위한 방법store.dispatch({key: value})
Dispatch
Subscribe
store안에 있는 변화를 감지
store.subscribe(function)
React Redux
Hooks를 이용하는 방법
useSelector()=>mapStateToProps()=>store.getState(): 상태 조회하기조회할 때는 꼭 필요한 필드만 가져오기(store에서 수정되면 참조하는 모든 컴포넌트가 리렌더링 되기 때문)
최적화 방법
독립 선언(여러번 사용)
equalityFn 사용하여 이전값이랑 달라졌을 경우에만 리렌더
shallowEqual 함수
useDispatch()=>mapDispatchToProps()=>store.dispatch(): Action Dispatch하기hook 자체가 dispatch, 내부 인자로 action 객체를 받음
컴포넌트가 리렌더링 될때마다 함수가 새로 만들어지는 것을 방지하도록 useCallback과 함께 사용하기
connect 함수를 이용하는 방법
고차 컴포넌트(HOC) connect()를 이용하는 방법
더 이상 권장하지 않음
mapStateToProps():store.getState()mapDispatchToProps():store.dispatch()
Redux Toolkit
Last updated