Open EYEG opened 5 months ago
const todos = [{ id: 1, checked: true }, { id: 2, checked: true }];
const nextTodos = [...todos];
위 코드에서 nextTodos 같이 객체 안에 객체를 넣어야 할 경우, 불변성을 지키면서 새 값을 할당하기 복잡해지는데, 이 불편함을 해소시킬 수 있는 라이브러리는 무엇일까요?
immer
` import produce from 'immer'; const nextState = produce(originalState, draft => { draft.somewhere.deep.inside = 5; ) `Q. 리액트에서 컴포넌트의 props
가 바뀌지 않았다면, 리렌더링하지 않도록 설정하게 해주는 API 이름은?
const onToggle = useCallback(id=>{
setTodos(todos => todos.map(todo => todo.id === id ? {...todo,checked: !todo.checked} : todo)
},[])
useState 함수형 업데이트를 사용하면 () 안정성을 보장합니다. 또한 () 최적화할 수 있습니다.
전개 연산자(...문법)을 사용하면 [ ]
복사를 하게 된다.
<FormTxt
id={'personName'}
label={'이름'}
maxLength={30}
isRequired={true}
placeholder={'이름을 입력해 주세요.'}
classProps={'font-light'}
onChange={(value) => {
setValue((prev) => {
return { ...prev, ...value };
});
}}
/>
컴포넌트는
리렌더링이 발생합니다.