Immer를 활용하여 상태간 변이 추적하기

상태 관리는 애플리케이션 개발에서 중요한 부분입니다. 상태를 변이시키는 것은 예측하지 못한 버그와 어려운 디버깅을 야기할 수 있으므로, 변이 추적은 특히 중요합니다. Immer는 JavaScript를 위한 불변성 라이브러리로, 객체 복제나 변이 추적 등을 쉽게 처리할 수 있게 도와줍니다.

Immer 소개

Immer는 불변성을 유지하면서도 쉽게 상태 변이를 수행할 수 있는 라이브러리입니다. 이를 통해 상태 객체를 직접 수정하는 것이 아니라, 변경 사항을 기록한 후 새로운 불변성을 가진 객체를 반환할 수 있습니다.

Immer 사용법

먼저, Immer를 프로젝트에 설치해야 합니다. npm install immer 명령어를 통해 설치할 수 있습니다.

import produce from 'immer';

const state = {
  count: 0
};

const nextState = produce(state, draftState => {
  draftState.count++;
});

console.log(nextState);
// { count: 1 }

위의 예제에서 produce 함수는 첫 번째 인자로 기존 상태 객체를, 두 번째 인자로 변이 함수를 받습니다. 변이 함수는 draftState라는 가상의 상태 객체를 인자로 받으며, 이를 통해 원하는 변이 작업을 수행할 수 있습니다. 이후 produce 함수는 변경 사항을 반영한 새로운 불변성을 가진 객체를 반환합니다.

상태 변이 추적하기

Immer를 활용하면 상태 변이를 추적하는 것이 쉬워집니다. 예를 들어, 상태의 변화를 로깅하거나 디버깅을 위해 변이 함수 내에 추가적인 로직을 작성할 수 있습니다.

import produce from 'immer';

const state = {
  count: 0
};

const nextState = produce(state, draftState => {
  draftState.count++;
  
  console.log('상태가 변경되었습니다.');
});

console.log(nextState);
// { count: 1 }

변이 함수 내에 console.log를 이용하여 상태 변경 로그를 출력할 수 있습니다. 이를 통해 상태가 어떻게 변하는지를 추적할 수 있습니다.

결론

Immer를 활용하면 상태 관리의 복잡성을 줄이고, 상태 변이를 추적하기 쉬워집니다. 불변성을 유지하면서도 간편한 상태 수정을 가능하게 한다는 점에서, Immer는 현대적인 JavaScript 개발에서 매우 유용한 도구입니다.

#immer #불변성 #자바스크립트