Handling Events
Handling Events
React 에서 이벤트를 처리하는 방식은 DOM 에서 이벤트를 처리하는 방식과 거의 유사하다. 몇가지 차이점이 있는데 다음과 같다.
- 소분자가 아닌 camelCase를 사용한다.
- 이벤트 헨들러를 string으로 전달하는것이 아니라 함수로 전달한다.
DOM:
1 | <button onclick="activateLasers()">Activate Lasers</button> |
React:
1 | <button onClick={activateLasers}>Activate Lasers</button> |
DOM 에서는 기본 동작을 막기 위헤서 return false
를 사용할 수 있는 반면에 React 에서는 기본 동작을 막기 위해 preventDefault
를 사용해야 한다.
DOM:
1 | <form onsubmit="console.log('You clicked submit.'); return false"> |
React:
1 | function Form() { |
React 에서는 DOM 엘리먼트를 생성한 후에 이벤트 리스너를 추가 하기 위해서 addEventListenter
를 호출할 필요가 없다. 렌더링 될때 리스너를 제공하는 방법을 사용한다.
1 | class Toggle extends React.Component { |
콜백 함수 내에서 this를 사용하고 싶다면 생성자에서 바인딩을 해주어야 한다. 이는 React 내에서의 특징이 이나리 일반적인 JavaScript에 특징이다. 만약 매번 바인딩 하기 싫다면 다음과 같은 방법을 사용해도 된다.
publick class fiedls syntax :
1 | class LoggingButton extends React.Component { |
화살표 함수 사용하기:
1 | class LoggingButton extends React.Component { |
화살표 함수를 사용할때에 문제점은 컴포넌트가 렌더링 될때마다 콜백이 새로 생성된다는 것이다. 대부분의 경우는 문제가 되지 않으나, 콜백이 하위 컴포넌트에 props로서 전달된다면 그 컴포넌트들은 추가로 다시 렌더링을 수행할 수 도 있다.