코드를 다음과 같이 수정해 보세요.

    EventPractice.js

    import React, { useState } from 'react';
     
    const EventPractice = () => {
      const [form, setForm] = useState({
        username: '',
        message: ''
      });
      const { username, message } = form;
      const onChange = e => {
        const nextForm = {
          ...form, // 기존의 form 내용을  자리에 복사한 
          [e.target.name]: e.target.value // 원하는 값을 덮어 씌우기
        };
        setForm(nextForm);
      };
      const onClick = () => {
        alert(username + ': ' + message);
        setForm({
          username: '',
          message: ''
        });
      };
      const onKeyPress = e => {
        if (e.key === 'Enter') {
          onClick();
        }
      };
      return (
        <div>
          <h1>이벤트 연습</h1>
          <input
            type="text"
            name="username"
            placeholder="사용자"
            value={username}
            onChange={onChange}
          />
          <input
            type="text"
            name="message"
            placeholder="아무거나 입력해 보세요"
            value={message}
            onChange={onChange}
            onKeyPress={onKeyPress}
          />
          <button onClick={onClick}>확인</button>
        </div>
      );
    };
    export default EventPractice;

     

    코드를 저장하고 기능이 잘 작동하는지 확인해 보세요.

    e.target.name 값을 활용하려면, 위와 같이 useState를 쓸 때 인풋 값들이 들어 있는 form 객체를 사용해 주면 됩니다.

    신간 소식 구독하기
    뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.