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

    예시 코드

    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);
    });

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