Skip to content

Qvil Blog

immer는 객체 비구조화 문법(Object Destructuring)을 사용하면 동작하지 않는다.

javascript, immer1 min read

immer는 객체 비구조화 문법(Object Destructuring)을 사용하면 동작하지 않는다.

아래는 redux에서 reducer쪽 immutable state를 immer로 handling하는 예제이다.

공통코드

1import { createAction, handleActions } from "redux-actions";
2import produce from "immer";
3
4// Action Types
5export const INCREMENT = "INCREMENT";
6export const increment = createAction(INCREMENT);
7
8const defaultState = {
9 count: 0,
10};

X

1const reducer = handleActions(
2 {
3 [INCREMENT]: (baseState) =>
4 produce(baseState, ({ count }) => {
5 count = count + 1;
6 }),
7 },
8 defaultState
9);
10
11export default reducer;

O

1const reducer = handleActions(
2 {
3 [INCREMENT]: (baseState) =>
4 produce(baseState, (draft) => {
5 draft.count = draft.count + 1;
6 }),
7 },
8 defaultState
9);
10
11export default reducer;