onKeyUp
(e.target
.속성값)const EventComponent = () => {
const [name, setName] = useState('');
let handleName = (e) => {//2.event객체 활용
setName(e.target.value);//3.state변경 (input의 value도 변경)
}
return (
<div>
<h3>리액트 이벤트 핸들링</h3>
<input type="text" name="name" onChange={handleName} value={name}/><br/> {/*1. 이벤트연결*/}
<h3>체인지된 결과: {name}</h3>
</div>
)
}
useState를 하나로 관리하기(객체로 사용) 😊
...
(spread operator) 를 사용하면, 객체의 모든 키와 값을 펼쳐서 나열해줍니다const EventComponent2 = () => {
const [form, setForm] = useState({name: '', topic: ''});//객체 state
let handleChange = (e) => {
const {name, value} = e.target;
/*
{...data, 키 : 값}
의 형태로 키만 변경합니다.
*/
//const copy ={...form, [name]: value }//spread문법으로 복사 후 키 값 수정
//setForm(copy);//state변경
setForm( prev => {
return {...prev, [name]: value}
})
}
let handleClick = () => {
alert(`결과: ${form.name} 님의 할일: ${form.topic}`)
setForm({name: '', topic: ''})//state변경
}
return (
<div>
<h3>리액트 이벤트 핸들링(객체로 핸들링)</h3>
<input type="text" name="name" onChange={handleChange} value={form.name}/><br/>
<h3>체인지된 결과: </h3>
<input type="text" name="topic" onChange={handleChange} value={form.topic} /><br/>
<h3>체인지된 결과: </h3>
<button type="button" onClick={handleClick}>클릭미</button>
</div>
)
}