[WIL] builder callback

Sunghoman·2022년 11월 15일
0

WIL

목록 보기
12/13

리덕스로 reducer 짜는데, extraReducer 쓰지 말라는 경고문을 봤음.

얼마 전까지는 문제 없었는디...

암튼 오늘 그거 알아볼거임


createReducer()

reducer는 action type과 그에 따른 동작을 정의해서

switchcase로 관리해야함

근데 이건 중첩이 깊어질 수록 코드가 길어지고, 원본 객체를 변형시킬 위험이 높아짐

근디 createReducer()로 mutative한 logic을 작성해도,

알아서 immutative한 업데이트가 이루어진다고 함

더 나아가, builder callback을 활용하여 중첩을 더욱 효율적으로 해결할 수 있도록 해줌

// 각 라인마다 빌더 메서드를 나누어 호출.
const counterReducer = createReducer(initialState, (builder) => {
  builder.addCase(increment, (state) => {})
  builder.addCase(decrement, (state) => {})
})

// 또는 메서드 호출을 연결하여 연속적으로 작성.
const counterReducer = createReducer(initialState, (builder) => {
  builder
    .addCase(increment, (state) => {})
    .addCase(decrement, (state) => {})
})

요런 식으로!


Builder Callback은 builder 객체 내의 addCase, addMatcher, addDefaultCase 메서드를 호출하여 리듀서의 액션에 대한 처리를 정의할 수 있게 해준다.

액션 타입이 정확히 일치하면 reducer로 처리한다.

액션에 대해 matcher의 패턴과 일치하는지 확인하고, 만약 일치한다면 처리한다. 여러 addMatcher들과 패턴이 일치한다면 작성된 순서에 맞춰 차례로 reducer로 처리한다.

이런것도 쓸 수 있음

profile
쉽게만 살아가면 개재밌어 빙고

0개의 댓글