React
immer로 불변성 관리를 쉽게 하자
규몽
2020. 12. 18. 03:52
immer란? 간단히 말해 불변성을 유지하는 코드를 쉽게 만들어주는 라이브러리다.
React에선 배열이나 객체를 업데이트 할 때 직접 수정하지 않고 불변성을 유지해주면서 해야 될 때가 많다.
간혹 객체내 코드가 깊고 복잡해지면 불변성을 유지 해주기도 복잡하고 코드도 길어진다. 이 때 immer를 사용하면 쉽게 해결할수 있다.
npm i immer로 immer를 다운로드 한후
import produce from 'immer'; 이렇게 produce라는 함수를 불러온다. 그리고 produce라는 함수를 사용 할 때 에는 첫번째 파라미터에는 수정하고 싶은 상태, 두번째 파라미터에는 어떻게 업데이트하고 싶을지 정의하는 함수를 넣어주게 된다.
immer를 사용한 예)
const reducer = (state=init,action) => produce(state,(draft)=>{
switch (action.type){
// 안쓴 경우
case: LOAD_MAIN_REQUEST:
return{
...state,
mainLoading:true,
mainLoadError:null,
mainLoadDone:false
}
// 쓴 경우
case: LOAD_MAIN_REQUEST:
draft.mainLoading=true;
draft.mainLoadError=null;
draft.mainLoadDone=false;
break;
}
})