터미널> npm install immer
터미널> yarn add immer
// 🔹 기본예시
import produce from 'immer';
const nextState = produce(originState, draft => {
// 바꾸고 싶은 값 바꾸기
draft.somewhere.deep.inside = 5;
})
// 🔹 사용예시
import produce from 'immer';
const originState = [
{
id : 1,
txt : 'hello'
},
{
id : 2,
txt : 'bye'
}
];
const nextState = produce(originState, draft => {
// id로 항목 찾아서 수정하기
const text = draft.find(t => t.id == 2);
text.txt = 'hello world!!';
// 새로운 데이터 추가
draft.push({
id : 3,
txt : 'good night'
})
// id로 항목 찾아서 제거
draft.splice(draft.findIndex(t = t.id == 1));
})
const update = produce(draft => {
draft.value = 2;
})
const originState = {
id : 1,
value : 123,
}
...
const nextState = update(originState)