๋ฆฌ์กํธ๋ฅผ ์ฐ๋ค ๋ณด๋ฉด ์ด๋ฆ, ์ด๋ฉ์ผ, ๋น๋ฐ๋ฒํธ ๋ฑ ์
๋ ฅํ๋๊ฐ ์ฌ๋ฌ ๊ฐ์ธ ๊ฒฝ์ฐ๊ฐ ์๊น๋๋ค. ๊ทธ๋ด ๋๋ง๋ค useState๋ฅผ ํ๋์ฉ ๋ง๋ค๋ฉด ๋๋ฌด ๋ณต์กํด์ง๊ฒ ์ฃ ?
์ค๋์ ๊ฐ์ฒด ์ํ๋ฅผ ์ฌ์ฉํด์ ์ฌ๋ฌ ์ ๋ ฅ๊ฐ์ ํ๋์ ์ํ๋ก ๊ด๋ฆฌํ๋ ๋ฐฉ๋ฒ์ ๋ฐฐ์๋ด ์๋ค!
1. ๐จโ๐ฉโ๐งโ๐ฆ ์ํ๋ฅผ ๊ฐ์ฒด๋ก ๋ง๋ค์ด์
์๋์ ๊ฐ์ด form ์ํ๋ฅผ ๊ฐ์ฒด ํํ๋ก ๋ง๋ค๊ณ , ๊ฐ ์
๋ ฅ ํ๋์ ์ด๋ฆ์ ํค(key)๋ก ์ฌ์ฉํฉ๋๋ค.
const [form, setForm] = useState({
name: '',
email: ''
});
์ด์ ์ ๋ ฅ๊ฐ์ด ๋ฐ๋ ๋๋ง๋ค ํด๋น ํค๋ง ์ ๋ฐ์ดํธํ๋ฉด ๋ผ์!
2. โ๏ธ onChange ํจ์ ์ฌ์ฌ์ฉํ๊ธฐ
๋ชจ๋ input์ ๊ฐ์ handleChange ํจ์๋ฅผ ์ฐ๊ฒฐํด๋ ๋ฉ๋๋ค. e.target.name์ ํ์ฉํด ์ด๋ค ํ๋๊ฐ ๋ฐ๋์๋์ง ์๋์ผ๋ก ๊ตฌ๋ถํ๊ฑฐ๋ ์.
function handleChange(e) {
const { name, value } = e.target;
setForm(prev => ({
...prev,
[name]: value
}));
}
์ด์ name="email" ๋๋ name="name" ์์ฑ๋ง ์ ๋ถ์ด๋ฉด ์์ฑ!
3. ๐งช ์ ์ฒด ์์ ์ฝ๋
function SignupForm() {
const [form, setForm] = useState({
name: '',
email: ''
});
function handleChange(e) {
const { name, value } = e.target;
setForm(prev => ({
...prev,
[name]: value
}));
}
return (
<div>
<input
name="name"
value={form.name}
onChange={handleChange}
placeholder="์ด๋ฆ"
/>
<input
name="email"
value={form.email}
onChange={handleChange}
placeholder="์ด๋ฉ์ผ"
/>
<p>
์ด๋ฆ: {form.name} <br />
์ด๋ฉ์ผ: {form.email}
</p>
</div>
);
}
๐ผ๏ธ ์ํ ์ ๋ฐ์ดํธ ํ๋ฆ๋
์๋ ๊ทธ๋ฆผ์ ์ ๋ ฅ๊ฐ์ด ๊ฐ์ฒด ์ํ์ ์ ์ฅ๋๊ณ , ํด๋น ๊ฐ์ UI์ ๋ฐ์ํ๋ ๊ณผ์ ์ ๋ณด์ฌ์ค๋๋ค:

๐ ํต์ฌ ์์ฝ
- ์ฌ๋ฌ ์ ๋ ฅ๊ฐ์ ๊ฐ์ฒด๋ก ๋ฌถ์ด์ ์ํ ๊ด๋ฆฌํ๋ฉด ํจ์ฌ ๊ฐ๋จํด์
name์์ฑ๊ณผe.target.name์ ํ์ฉํ๋ฉด onChange ํจ์ ์ฌ์ฌ์ฉ์ด ๊ฐ๋ฅํด์...prev๋ก ์ด์ ๊ฐ์ ๋ณด์กดํ ํ ์ ๋ฐ์ดํธํ์ธ์