더북(TheBook)

다음 코드는 좀 더 복잡한 데이터를 불변성을 유지하면서 업데이트하는 예시입니다.

예시 코드

import produce from 'immer';
 
const originalState = [
  {
    id: 1,
    todo: '전개 연산자와 배열 내장 함수로 불변성 유지하기',
    checked: true,
  },
  {
    id: 2,
    todo: 'immer 불변성 유지하기',
    checked: false,
  }
];
 
const nextState = produce(originalState, draft => {
  // id 2 항목의 checked 값을 true 설정
  const todo = draft.find(t => t.id === 2); // id 항목 찾기
  todo.checked = true;
    // 혹은 draft[1].checked = true;
 
  // 배열에 새로운 데이터 추가
  draft.push({
    id: 3,
    todo: '일정 관리 앱에 immmer 적용하기',
    checked: false,
  });
 
  // id = 1 항목을 제거하기
  draft.splice(draft.findIndex(t => t.id === 1), 1);
});

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.