๐ก REACT FORMS
React์์ ์ฌ์ฉํ๋ ํ์ค ๋ฐฉ๋ฒ
Controlled Components ์ ๋ํ ์ ๋ฆฌ์ ๋๋ค.
<input>
, <textarea>
,<select>
setState()
์ ์
๋ฐ์ดํธํ๋ค.onChange()
๋ฅผ ํตํด ๊ธฐ์กด state์์ ๋ณ๊ฒฝ ๋ ๊ฐ์ setState()
๋ก ์
๋ฐ์ดํธ ํด์ค๋ค.<select>
ํ๊ทธ์ ๊ฒฝ์ฐ ๋ค์ค ์ ํ์ ํ ์ ์๋ค.<select multiple={true} value={['B', 'C']}>
<input type="file">
ref
๋ฅผ ์ฌ์ฉํด์ผํ๋๋ฐ ์์ง ๋ฐฐ์ฐ์ง ์์์ ์ถํ์ ์
๋ฐ์ดํธ ์์ const Create = () => {
const [value, setValue] = useState({ title: "", body: "", author: "" });
const handleChange = (e) => {
const updateValue = e.target.value;
setValue({ ...value, [e.target.name]: updateValue });
};
const handleSubmit = (e) => {
e.preventDefault();
console.log(value);
};
return (
<div className="create">
<h2>Add a New Blog</h2>
<form className="blog-form" onSubmit={handleSubmit}>
<label htmlFor="blog-title">Blog Title: </label>
<input
id="blog-title"
type="text"
name="title"
required
onChange={handleChange}
/>
<label htmlFor="blog-body">Blog body: </label>
<textarea
name="body"
id="blog-body"
required
onChange={handleChange}
></textarea>
<label htmlFor="blog-author">Blog author: </label>
<select name="author" id="blog-author" onChange={handleChange}>
<option value="kim">kim</option>
<option value="lee">lee</option>
<option value="park">park</option>
</select>
<button type="submit">Add Blog</button>
</form>
</div>
);
};
useForm()
์ด๋ผ๋ ์ปค์คํ
ํ
์ ๋ง๋๋ ๊ฒฝ์ฐ๋ ๋ง์ ๊ฑฐ ๊ฐ๋ค. ์ด์ ๊ด๋ จ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ / ์น์ฌ์ดํธ ๋ชจ์