라이브러리

useState는 수정할때 새로운 껍데기를 만들어서 수정해야하지만

useImmer를 이용하면 실제 객체를 바로수정해도 알아서 껍데기 만들고 업데이트해준다.

중첩되고 복잡한 객체가 있을때, useImmer를 사용하면 좋다

const initUser = {
	name: 'haeun',
	level:7,
	friends:[
		{
			name: 'js',
			level: 2
		},
		{
			name: 'html',
			level: 5
		},
	]
}
const [user, updateUser] = useImmer(initUser);

//1
updateUser((user) => {
	user.name = 'haeun2' //할당연산자로 바로 수정가능
})

//2
updateUser((user) => {
	const friend = user.friends.find((f) => f.name === 'html');
	friend.name = 'react'; 
})