내일배움캠프[4기_Reac트랙]/TIL

내일배움캠프 React트랙 32일차 회고 (2022.12.14)

ecoEarth 2022. 12. 14. 22:58

Uncontrolled-Component

React에서는 모든 UI의 업데이트는 상태의 변경으로부터 발생해야 한다.

그런데, <inpurt type="text" />와 같은 입력form은 React내부적으로 상태변경이 이루어지지않았음에도 불구하고

UI상으로 업데이트가 되는 것을 알  수 있다. 이것을 Uncontrolled-Component라고 한다.

이러한 Uncontrolled-Component를 제어해 Controlled-Component로 만들어주는 것이 중요하다.

 

Controlled-Component 예제

import React, { useState } from 'react';

export default function AppForm() {
  const [form, setFrom] = useState({ name: '', email: '' });
  const handleSubmit = (e) => {
    e.preventDefault();
    console.log(form);
  };
  const handleChange = (e) => {
    const { name, value } = e.target;
    setFrom({ ...form, [name]: value });
  };
  return (
    <form onSubmit={handleSubmit}>
      <label htmlFor='name'>이름:</label>
      <input
        type='text'
        id='name'
        name='name'
        value={form.name}
        onChange={handleChange}
      />
      <label htmlFor='email'>이메일:</label>
      <input
        type='email'
        id='email'
        name='email'
        value={form.email}
        onChange={handleChange}
      />
      <button>Submit</button>
    </form>
  );
}