수업 복습하던 중,,, 배웠는데 집중 못 해서 넘어갔던 개념을 발견해 적어본다
참고
상태를 변경할 수 없음을 의미합니다
let message = 'hello'
let temp = message
message = 'world'
console.log(message) // world
console.log(temp) // hello
let array = [1, 2, 3]
let tempArray1 = array
let tempArray2 = [...array]
array[0] = 100
console.log(tempArray1) // 1?
console.log(tempArray2) // 2?

react에서 중요한 불변성의 쉬운 관리를 돕는 라이브러리
immer에서 사용하는 상태 변경 함수
produce(baseState, recipe: (draftState) => void): nextState
const baseState = [
{name: 'podo', age: 5},
{name: 'yuza', age: 2},
{name: 'bambi', age: 1}
]
const nextState = produce(baseState (draftState) => {
draftState.push({name: 'soohyun', age: 18})
draftState[2].age = 3
})
console.log(baseState)
console.log(nextState)
const [todos, setTodos] = useImmer(initialState);
const handleDone =()=>{
setTodos(draft=>{
draft[0].done = true;
})
}
캡슐화의 장점은 내가 내부동작을 모르고 간편하게 사용이 가능 하지만 단점은 내부 동작을 모르고 사용하는 게 어떤 부작용을 줄 지 모르겠어서 무섭다 ㅠ 아직 나의 프로젝트에 immer를 적용하지는 않았지만 부트캠프 수업에서도 사용할 정도로 안정적이라니 좀 더 사용을 고려해 봐야겠다 ㅋㅋㅋ ㅠㅠ