Skip to content

Qvil Blog

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

— javascript, immer — 1 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;