์ด๋ฒคํธ ํธ๋ค๋ง
๋ฆฌ์กํธ์ ์ด๋ฒคํธ ์์คํ
๋ฆฌ์กํธ์ ์ด๋ฒคํธ ์์คํ ์ ์น ๋ธ๋ผ์ฐ์ ์ HTML ์ด๋ฒคํธ์ ์ธํฐํ์ด์ค๊ฐ ๋์ผํ๊ธฐ ๋๋ฌธ์ ์ฌ์ฉ๋ฒ์ด ๊ฝค ๋น์ทํ๋ค. ๋ค๋ง ์ฃผ์ํด์ผ ํ ์ฌํญ์ด ๋ช ๊ฐ์ง ์กด์ฌ ํ๋ค.
- ์ด๋ฒคํธ ์ด๋ฆ์ ์นด๋ฉ ํ๊ธฐ๋ฒ์ผ๋ก ์์ฑํ๋ค.
- ์๋ฅผ ๋ค์ด HTML์ onclick์ ๋ฆฌ์กํธ์์๋ onClick์ผ๋ก ์์ฑํด์ผ ํ๋ค.
- ์ด๋ฒคํธ์ ์คํํ ์๋ฐ์คํฌ๋ฆฝํธ ์ฝ๋๋ฅผ ์ ๋ฌํ๋ ๊ฒ์ด ์๋๋ผ, ํจ์ ํํ์ ๊ฐ์ฒด ๊ฐ์ ์ ๋ฌํด์ผ ํ๋ค.
- DOM ์์์๋ง ์ด๋ฒคํธ๋ฅผ ์ค์ ํ ์ ์๋ค.
- ์ง์ ๋ง๋ ์ปดํฌ๋ํธ์ ์ด๋ฒคํธ๋ฅผ ์์ฒด์ ์ผ๋ก ์ค์ ํ ์ ์๊ธฐ ๋๋ฌธ์ onClick ์ด๋ฒคํธ๋ฅผ ์ ๋ฌํ๋ ค๊ณ ํ๋ค๋ฉด ๊ทธ๊ฒ์ ๊ทธ๋ฅ ์ด๋ฆ์ด onClick์ธ props๋ฅผ ์ ๋ฌํด ์ค ๋ฟ์ด๋ค.
input ์ฌ๋ฌ ๊ฐ ๋ค๋ฃจ๊ธฐ
setState๋ฅผ ์ฌ๋ฌ ๊ฐ ๋ง๋ค์ด ์ํ๋ฅผ ๊ด๋ฆฌํ๋ ๋ฐฉ๋ฒ๋ ์์ ์ ์๊ณ ๊ด๋ฆฌํด์ผ ํ๋ input์ ๋ค์ด์จ ๊ฐ๋ค์ ํ๋์ ๊ฐ์ฒด๋ก ๋ง๋ค์ด ๊ด๋ฆฌํ๋ ๋ฐฉ๋ฒ๋ ์กด์ฌํ ๊ฒ์ด๋ค. input์ฐฝ์ด ๋ช ๊ฐ์ง ์๋ค๋ฉด ๊ฐ input์ ๋ค์ด์จ ๊ฐ๋ค์ useState ํ๋์ฉ ๊ด๋ฆฌํด๋ ๋๊ฒ ์ง๋ง input์ฐฝ์ด ์ฌ๋ฌ ๊ฐ๋ผ๋ฉด ์๋ฌด๋๋ ํ๋์ ๊ฐ์ฒด๋ก ๋ง๋ค์ด ๊ด๋ฆฌํ๋ ํธ์ด ๊ฐ๋ ์ฑ์ด ์ข์ ๊ฒ์ด๋ค. ๊ทธ๋ฆฌ๊ณ ํ๋์ ๊ฐ์ฒด๋ก ๊ฐ์ ๊ด๋ฆฌํ ๋ ์ ์ฉํ๊ฒ ์ฌ์ฉํ ์ ์๋ ๊ฐ์ด ๋ฐ๋ก event.target.name์ด๋ค. event.target.name์ ํด๋น ์ธํ์ name์ ๊ฐ๋ฆฌํจ๋ค.
์ฝ๋๋ก ํ์ธํด ๋ณด์
import { useState } from "react";
const Practice = () => {
const [form, setForm] = useState({
username: "",
message: "",
});
const { username, message } = form;
const handleChange = (event) => {
const nextForm = {
...form,
[event.target.name]: event.target.value,
};
setForm(nextForm);
};
return (
<div>
<div>{username}</div>
<div>{message}</div>
<input name="username" onChange={handleChange} />
<input name="message" onChange={handleChange} />
</div>
);
};
export default Practice;
์์ ์์๋ ๋ด๊ฐ ๊ธํ๊ฒ ์์ฑํ ์ฝ๋๋ค์ด๊ธฐ ๋๋ฌธ์ ์์์ ์ ํฉํ์ง๋ ์ ๋ชจ๋ฅด๊ฒ ์ง๋ง, handleChange ํจ์๋ถ๋ถ์ ์ ์ดํด ๋ณด๋ฉด ์์ฃผ ๊ฐ๋จํ๊ฒ ์ฌ๋ฌ input์ฐฝ์ด ์กด์ฌํจ์๋ ํ๋์ ์ด๋ฒคํธ ํธ๋ค๋ฌ์ ํ๋์ state๋ฅผ ํตํด์ ๋ฐ์ดํฐ ๊ด๋ฆฌ๋ฅผ ํ ์ ์๋ค. ์ฝ๋๊ฐ ๊ต์ฅํ ๊ฐ๊ฒฐํด ์ง๋ ์ ์ ํ์ธํ ์ ์๋ค.