Development/React.js

리엑트 입력 폼 다루기

moretz0921 2022. 3. 15. 18:41

 

리엑트 입력 폼

 

1. HTML과 다른점

1) onChange
: Prop을 사용하면 입력 값이 바뀔 때마다 핸들러 함수를 실행한다.

- oninput 이벤트와 같다고 생각하자.

 

2. 폼을 다루는 기본적인 방법
: state를 만들고 target.value 값을 사용해서 값을 변경해 줄 수 있다.

- value Prop으로 state 값을 내려주고, onChange Prop으로 핸들러 함수를 넘겨준다.

 

const handleChange = (e) => {
	e.target.value  
};

 

<input value={values.title} onChange={handleChange} />

 

 

 

3. 폼 값을 객체 하나로 처리
: 각각의 state로 관리하는게 아니라 하나의 state에서 관리 할 것!

onSubmit 
: 웹 개발에서 자주 사용하는 이벤트 

 

import React, { useState } from 'react';

function ReviewForm() {
  const [values, setValues] = useState({
    title: '',
    rating: 0,
    content: '',
  });

  const handleChange = (e) => {
    const { name, value } = e.target;
    setValues((prevValues) => ({
      ...prevValues,
      [name]: value, // 대괄호 표기법
    }));
  };

  const handleSubmit = (e) => {
    e.preventDefault();
  };

  return (
    <form className="ReviewForm" onSubmit={handleSubmit}>
      <input value={values.title} onChange={handleChange} />
      <input type="number" value={values.rating} onChange={handleChange} />
      <textarea value={values.content} onChange={handleChange} />
      <button type="submit">확인</button>
    </form>
  );
}

export default ReviewForm;

 

 

4. 기본 submit 동작 막기
: 이벤트 객체의 preventDefault를 사용한다.

 

const handleSubmit = (e) => {
  e.preventDefault();
  // ...
}