Store 만들기
src/stores 폴더 내부에 폴더 생성
createSlice API 를 사용해서 action과 reducer 로직 정의→ slice 란, App 의 단일 기능에 대한 상태와, 액션 로직을 한 곳에 모아둔 것
slice 를 만들고 나면, 해당 폴더의 index.ts 에서 reducer 와 action 을 export 해주고,stores/index.ts 의 combineReducers 내부에 Reducer 를 추가해준다.dispatch 를 통해 reducer 을 실행할 때는 useAppDispatch 를 사용한다Selector 만들기
state 를 가져오기 위해서는
selector 를 정의해주어야 한다.slice 에 정의한 state 들을 가져올 수도 있고, 어떤 값이 바뀌었을 때 재계산되어야 하는 로직이 필요한 경우 createSelector 를 사용해 selector 를 정의할 수도 있다.selector 를 만들고 나면, 해당 폴더의 index.ts 에서 export 해준다.selector 로 값을 가져올 때는 다음과 같이 useAppSelector 를 사용한다listener 만들기
값을 단순 계산하는 로직이 아니라, React 의
useEffect hook 처럼, action 이 수행될 때 특정한 로직을 수행해야하는 경우라면, listener 를 만들어 사용한다.setAuth action 이 수행되면, token 을 sessionStorage 에 저장하는 effect 를 정의
Unsubscribe 함수를 반환하는 setupAuthListeners 함수를 만들어준다.
subscriptions 배열 안에 해당 action 을 startListening() 하고 난 반환값 저장stores/listeners.ts 의 listeners 배열에 setupAuthListeners 를 추가