웹/React
[React/리액트] 객체(배열)를 복사하고 부분만 업데이트하기
P1su
2024. 7. 26. 20:03
스프레드 연산을 통한 복사
const obj = {
name: '',
age: 0,
color: '',
};
const copy = { ...obj };
값을 추가하거나 수정할 수도 있다.
const copy = { ...obj, name: 'p1su' }; //수정
const copy1 = { ...obj, id: 12 } //추가
useState를 통해 객체값 업데이트하기
위 스프레드 연산을 통한 객체를 다루는 방법을 사용하여 state값을 적절히 변경 후 렌더링할 수 있다.
const newValue = {
id : 12,
gender : 'boy',
};
const [values, setValues] = useState(obj);
const handleClick = () => {
setValues(newValue);
};
당연하게도 해당 코드는 values의 값이 newValue 값으로 덮어 씌워진다.
setValues((prevState) => ({
...prevState,
...newValue,
}));
setter 함수 부분을 다음과 같이 콜백함수 형식으로 바꿔주고, 스프레드 연산을 사용하면 원본을 유지하며 객체를 업데이트할 수 있다.
해당 콜백함수는 이전 값을 인자로 받아 새로운 값을 리턴하는 구조이다.
728x90