✍ 따뜻한 개발 공부

redux의 reducer와 extrareducer의 차이

따따시 2023. 5. 10. 20:52

 

갠플젝을 하면서 redux를 사용해서 작업을 하고 있는데 

사용자 정보를 전역상태관리를 하려고 slice부분을 만지다보니 궁금한 점이 생겼다 

 

1. reducer와 extrareducer의 차이가 뭘까?

 

reducers와 extraReducers는 Redux Toolkit에서 Redux 슬라이스를 정의할 때 사용되는 두 가지 다른 속성이다.

  1. reducers:
    • reducers는 Redux 슬라이스에 대한 '기본적인 리듀서 함수들'을 정의하는 속성이다. 
    • reducers 객체는 각각의 리듀서 함수를 특정 액션 유형에 맵핑한다. 
    • Redux 슬라이스의 액션 생성자 함수들을 사용하여 생성된 액션 객체가 디스패치되면, reducers에 정의된 해당 액션 유형에 맞는 리듀서 함수가 호출된다. 
    • 각 리듀서 함수는 현재 상태(state)와 액션 객체(action)를 인자로 받아서 새로운 상태를 반환한다. 
    • createSlice 함수로 슬라이스를 생성할 때, reducers 속성에 리듀서 함수들을 정의한다. 
  2. extraReducers:
    • extraReducers는 Redux 슬라이스에 추가적인 리듀서 함수들을 정의하는 속성이다. 
    • extraReducers 객체는 각각의 리듀서 함수를 특정 액션 유형에 맵핑한다. 
    • extraReducers는 외부 모듈에서 생성된 액션 유형에 대한 리듀서 함수를 추가할 때 사용된다. 
    • Redux 슬라이스의 액션 생성자 함수들로 생성된 액션 객체뿐만 아니라 다른 슬라이스에서 생성된 액션 객체도 extraReducers에 정의된 해당 액션 유형에 맞는 리듀서 함수를 호출할 수 있다. 
    • 각 리듀서 함수는 현재 상태(state)와 액션 객체(action)를 인자로 받아서 새로운 상태를 반환한다.
    • createSlice 함수로 슬라이스를 생성할 때, extraReducers 속성에 리듀서 함수들을 정의한다. 

 

즉, reducers는 슬라이스에 대한 기본적인 리듀서 함수들을 정의하고,

extraReducers는 슬라이스에 추가적인 리듀서 함수들을 정의하는 데 사용되는 것

둘 다 액션 유형을 매핑하여 해당 액션에 대한 상태 업데이트 로직을 정의하는데 사용된다.