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