REACT โ‘ฉ Forms

์˜›์Šฌยท2022๋…„ 1์›” 12์ผ
0

REACT ๐Ÿ”ต

๋ชฉ๋ก ๋ณด๊ธฐ
10/16
post-thumbnail

๐Ÿ’ก REACT FORMS
React์—์„œ ์‚ฌ์šฉํ•˜๋Š” ํ‘œ์ค€ ๋ฐฉ๋ฒ•
Controlled Components ์— ๋Œ€ํ•œ ์ •๋ฆฌ์ž…๋‹ˆ๋‹ค.

Controlled Components

  • ๋Œ€ํ‘œ์ ์œผ๋กœ ์ปจํŠธ๋กค์ด ๊ฐ€๋Šฅํ•œ Form Component ํƒœ๊ทธ :
    <input>, <textarea>,<select>
  • React์—์„œ๋Š” ๊ฐ ์ปดํฌ๋„ŒํŠธ์˜ state๋Š” setState()์— ์—…๋ฐ์ดํŠธํ•œ๋‹ค.
  • onChange()๋ฅผ ํ†ตํ•ด ๊ธฐ์กด state์—์„œ ๋ณ€๊ฒฝ ๋œ ๊ฐ’์„ setState()๋กœ ์—…๋ฐ์ดํŠธ ํ•ด์ค€๋‹ค.
  • <select>ํƒœ๊ทธ์˜ ๊ฒฝ์šฐ ๋‹ค์ค‘ ์„ ํƒ์„ ํ•  ์ˆ˜ ์žˆ๋‹ค.
<select multiple={true} value={['B', 'C']}>

Uncontrolled Component

  • <input type="file">
  • value๊ฐ€ ์ฝ๊ธฐ ์ „์šฉ์ธ ๊ฒฝ์šฐ, ์ปดํฌ๋„ŒํŠธ๋Š” ์ปจํŠธ๋กค์ด ๋ฆฌ์•กํŠธ์—์„œ๋Š” ์–ด๋ ต๊ธฐ ๋•Œ๋ฌธ์— ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค. (DOM์—์„œ ํ•ธ๋“ค๋ง์„ ํ•ด์ค€๋‹ค)
    ๐Ÿ‘‰ 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()์ด๋ผ๋Š” ์ปค์Šคํ…€ ํ›…์„ ๋งŒ๋“œ๋Š” ๊ฒฝ์šฐ๋„ ๋งŽ์€ ๊ฑฐ ๊ฐ™๋‹ค.

๊ทธ์™ธ

์ด์— ๊ด€๋ จ๋œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ / ์›น์‚ฌ์ดํŠธ ๋ชจ์Œ

profile
์›น ํผ๋ธ”๋ฆฌ์…”์ž…๋‹ˆ๋‹ค๐Ÿ’“

0๊ฐœ์˜ ๋Œ“๊ธ€