라이브러리
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';
})