useState를 사용하여 객체를 업데이트 할 때의 방법입니다.
const [form, setForm] = useState({
title: '제목',
description: '설명',
})
const handleInputChange = (e) => {
setForm({
...form,
[e.target.name]: e.target.value,
})
}
input이 여러 개여도 해당 방법으로 input의 값을 모두 변경 가능합니다.
중첩 객체를 업데이트 할 때에는 immer 라이브러리를 사용하면 코드 가독성에 좋습니다.
immer 사용 전
const [form, setForm] = useState({
title: '제목',
description: '설명',
info: {
level: 1,
name: 'react',
}
})
const handleInputChange = (e) => {
setForm({
...form,
info: {
...form.info,
level: e.target.value,
},
})
}
immer 사용 후
npm i use-immer
const [form, updateForm] = useImmer({
title: '제목',
description: '설명',
info: {
level: 1,
name: 'react',
}
})
const handleInputChange = (e) => {
// 일반 객체
updateForm((draft) => {
draft[e.target.name]: e.target.value
})
// 중첩 객체
updateForm((draft) => {
draft.info.level = e.target.value
})
}
'React' 카테고리의 다른 글
[React] vite로 프로젝트 template 만들기 (2) | 2024.12.29 |
---|---|
[React] useRef (0) | 2024.12.11 |
[React] Context API를 사용하기 전에 고려할 점 (0) | 2024.12.09 |
[React] useReducer (1) | 2024.07.26 |
[React] 다양한 Slot 활용 방법 (1) | 2024.07.16 |