React

[use-immer] 쉬운 불변성 관리 use-immer

눙엉 2022. 1. 11. 16:55

useState와 매우 비슷하다.

첫 번째 값은 현재 상태

두 번째 값은 업데이트 함수이다.

 

 

// 설치 방법
npm install immer use-immer

 

상태값이 객체일 때

import { useImmer } from 'use-immer';

// 상태값이 객체일 때
function App() {
	const [person, updatePerson] = useImmer({
		name: "suhyeok",
		age: "27"
	});

	const updateName = (name) => {
		updatePerson(draft => {
			draft.name = name;
		});
	}

	const plusAge = () => {
		updatePerson(draft => {
			draft.age++;
		});
	}
}

상태값이 배열일 때

import { useImmer } from 'use-immer';

// 상태값이 배열일 때
function App() {
	const [number, updateNumber] = useImmer([1,2,3]);

	const updateName = (name) => {
		updatePerson(draft => {
			draft[0] = 0
		});
	}
}

// number 배열의 0번째 index가 1에서 0으로 변경된다.

 

 

상태를 객체, 배열로 관리할 때 불변성에 신경 안 써도 돼서 좋은 것 같다.