1 minute read

폼전송

이벤트 객체
💡그 객체를 가리킨다.
💡e.target 은 그 객체를 가리킨다.
💡e.target.value 은 그 객체의 속성을 가리킨다.
💡e.target.name 은 그 객체의 속성을 가리킨다.

방법1 (간단한 방법)

import React, { useState } from 'react';

function YourComponent() {
  const [form, setForm] = useState({ name: '', username: '' });

  // name을 업데이트하는 함수
  const handleNameChange = (event) => {
    setForm({ ...form, name: event.target.value });
  };

  // username을 업데이트하는 함수
  const handleUsernameChange = (event) => {
    setForm({ ...form, username: event.target.value });
  };

  return (
    <div>
      <input
        type="text"
        placeholder="Name"
        value={form.name}
        onChange={handleNameChange}
      />
      <input
        type="text"
        placeholder="Username"
        value={form.username}
        onChange={handleUsernameChange}
      />

      <div>
        <p>Name: {form.name}</p>
        <p>Username: {form.username}</p>
      </div>
    </div>
  );
}

export default YourComponent;

방법2 (간단한 방법에서 합치기)

import React, { useState } from 'react';

function YourComponent() {
  const [form, setForm] = useState({ name: '', username: '' });

  // name 또는 username을 업데이트하는 함수
  const handleInputChange = (event, field) => {
    setForm({ ...form, [field]: event.target.value });
  };

  return (
    <div>
      <input
        type="text"
        placeholder="Name"
        value={form.name}
        onChange={(event) => handleInputChange(event, 'name')}
      />
      <input
        type="text"
        placeholder="Username"
        value={form.username}
        onChange={(event) => handleInputChange(event, 'username')}
      />

      <div>
        <p>Name: {form.name}</p>
        <p>Username: {form.username}</p>
      </div>
    </div>
  );
}

export default YourComponent;

방법3 (이벤트 객체에서 객체비구조화 할당 받기)

비구조화 할당 예시

const obj = { a: 1, b: 2 };
const { a, b } = obj;
console.log(a); // 1
console.log(b); // 2

function YourComponent() {
  const [form, setForm] = useState({ name: '', username: '' });

  const onChange = (event) => {
    const { name, value } = event.target; // 비구조화 할당
    setForm({
        ...form,
        [name]: [value]  // 연산프로퍼티
    });
  };

  return (
      <div>
          <form onSubmit={onSubmit}>
              <input
                  name="username"
                  placeholder="아이디"
                  value={form.username}
                  onChange={onChange}
              />
              <input
                  name="name"
                  placeholder="이름"
                  value={form.name}
                  onChange={onChange}
              />
              <button type="submit">등록</button>
          </form>
      </div>
  );
}
export default YourComponent;

이벤트 객체 비구조화 할당
💡event.target 객체의 name과 value 속성을 추출하여 새로운 변수로 할당
💡event.target.name과 event.target.value를 사용할 필요 없이 name과 value라는 변수를 직접 사용할 수 있게 된다.

Leave a comment