코드를 다음과 같이 수정해 보세요.
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 객체를 사용해 주면 됩니다.