작성
·
273
0
강사님 github의 toolkit패키지 reducer/user.js 파일입니다.
궁금한것은 reducers에 쓰여지는 내용과 extraReducers의 차이점이 궁금합니다.
강의에는 없는 내용이고 나중에 추가해주신부분이라 구글링을 해보았지만 단순 정의만으로는 이해하기가 좀 어려웠습니다.
제가 지금 이해한 차이점으로는 extraReducers에서는 pending, fulfilled, rejected 상태에 따라 state를 컨트롤 할 수 있다 정도입니다.
그렇다면 reducers에 작성하신 addPostToMe와 removePostToMe는 pending, fulfilled, rejected 상태에 따른 state컨트롤이 필요없어서 reducers에 작성하신건지, 아니면 addPostToMe와 removePostToMe가 post.js 관련이지만 user.js와도 뭔가 살짝? 관련이 있어서 user.js의 reducers에 넣으신건지 이해가 잘안됩니다.
혹시 질문에 부족한점 있었다면 알려주시면 더 보충해서 다시 질문드리도록 하겠습니다. 감사합니다.
답변 1
0
reducers는 단순히 동기적으로 자기자신의 state를 바꾸는 action들입니다.
extraReducers는 외부로부터 state가 바뀌는 경우를 처리하기 위함입니다. login이나 logout 등은 createAsyncThunk를 통해 만든 액션입니다. userSlice에서 이렇게 외부에서 생성한 createAsyncThunk같은 것을 대응하려면 extraReducers에 등록해야 합니다. 비슷한 이유로 다른 슬라이스의 액션에서 내 슬라이스의 state를 바꾸려고 한다면 extraReducers에서 다른 슬라이스의 액션을 등록하셔야 합니다.