React에서의 Handling event는 DOM elements에서의 Handling evnet와 유사하다. 다만 React에서는 아래의 몇 가지 주의할 점을 정리해보자.
Handling Event 사용법
- React events는 camelCase 표기법으로 나타낸다.
- event handler를 넘길 때 JSX 문법으로 넘긴다.
- HTML
1 2 3
<button onclick="activateLasers()"> Activate Lasers </button>
- React
1 2 3
<button onClick={activateLasers}> Activate Lasers </button>
또 하나 주의할 점은 React에서는 default behavior을 방지하기 위해 ‘false’를 return 할 수 없다.
- HTML
1 2 3
<form onsubmit="console.log('submit'); reutrn false"> <button type="submit">Submit</button> </form>
- React
1 2 3 4 5 6 7 8 9 10 11 12
function Form() { function handleSubmit(e) { e.preventDefault(); // Form이 Submit 되는 default behavior를 방지한다. console.log('submit'); } return( <form onSubmit={handleSubmit}> <button type="submit">Submit</button> </form> ) }
React에서는 일반적으로 DOM element에 listener를 붙이기 위해 addEventListener를 호출할 필요가 없다. React에서는 element가 최초로 그려질 때 listener를 제공한다.
Function Bounding in Javascript
Javascript에서 Class method는 기본적으로 바운딩 되지 않는다. 만약 onClick={this.handleClick}과 같이 뒤에 ()가 없는 method를 참조할 경우 반드시 바인딩이 되어야 한다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
class Toggle extends React.Component {
constructor(props) {
super(props);
this.state = {isToggleOn: ture};
this.handleClick = this.handleClick.bind(this);
}
handleCilck() {
this.setState(prevState => ({
isToggleOn: !prevState.isToggleOn
}));
}
render() {
return (
<button onClick={this.handleClick}>
{this.state.isToggleOn ? 'ON' : 'OFF'}
</button>
)
}
}
ReactDOM.render(
<Toggle />,
document.getElementById('root')
);