1. 카멜표기법
- onClick, onKeyUp, onChange ...
2. 이벤트에 실행할 자바스크립트코드를 전달하는 것이 아니라 함수형태의값을 전달한다.
- ""(X), 함수형태의 객체로 전달 () => {}
3. DOM 요소에만 이벤트 설정할 수 있다.
- div, button, input, form, span 등의 DOM요소에 이벤트 설정 가능
- 우리가 직접 만든 컴포넌트에는 이벤트를 자체적으로 설정 못한다.
예를들면, <MyComponent onClick={doSomething} />
이렇게 되면 MyComponent를 클릭할때 doSomething함수를 실행하는 것이 아니라
그냥 이름이 onClick인 props를 MyComponent에게 전달해주는 것 뿐이다.
- 하지만, 전달받은 props를 컴포넌트 내부의 DOM이벤트로 설정할 수는 있다.
<div onClick={this.props.onClick}>
(...)
</div>
(1) 컴포넌트 생성 및 불러오기
(2) onChange이벤트 핸들링하기
(3) 임의 메소드 만들기
(4) input 여러개 다루기
(5) onKeyPress이벤트 핸들링하기
import React, {useState} from 'react';
const EventPractice = () => {
const [userName, setUserName] = useState('');
const [message, setMessage] = useState('');
const onChangeUserName = (e) => {
setUserName(e.target.value)
}
const onChangeMessage = (e) => {
setMessage(e.target.value)
}
const onClick = () => {
alert(userName + ': ' + message);
setUserName('');
setMessage('');
}
const onKeyPress = () => {
if(e.key === 'Enter') {
onClick();
}
}
return (
<>
<h1> 이벤트 연습 </h1>
<input
type='text'
name='userName'
placeholder='사용자명'
value={userName}
onChange={onChangeUserName}
/>
<input
type='text'
name='message'
placeholder='아무거나 입력해보세요'
value={message}
onChange={onChangeMessage}
onKeyPress={onKeyPress}
/>
<button
onClick={onClick}
>
확인
</button>
</>
)
}
export default EventPractice;
import React, {useState} from 'react';
const EventPractice = () => {
const [form, setForm] = useState({
userName: '',
message: ''
})
const {userName, message} = form;
const onChange = (e) => {
const nextForm = {
...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>
)
}