React에서 event 핸들링하는 방법

React에서 event 핸들링하는 방법

2023-03-31

안녕하세요.

지난 시간에는 반복문을 사용해서 컴포넌트를 렌더링하는 방법에 대해서 알아봤습니다.

이번 시간에는 React에서 이벤트를 핸들링하는 방법에 대해서 알아보겠습니다.

자바스크립트에서 DOM에 이벤트를 등록하는 방법은 다음과 같습니다.

<!DOCTYPE html>
<html lang="en">
<body>
  <button onclick="document.getElementById('result').innerHTML = 'Hello World!'">What time is it?</button>
  <p id="result"></p>
</body>
</html>

그러나 React에서는 onclick 대신에 onClick을 사용합니다.

이와 마찬가지로 javascript에서는 onclick, onmouseover, onmouseout, onfocus, onblur 등의 이벤트를 사용하지만, React에서는 onClick, onMouseOver, onMouseOut, onFocus, onBlur 등의 이벤트를 사용합니다.

<!DOCTYPE html>
<html lang="en">
<body>
  <div id="root"></div>
  <script crossorigin src="https://unpkg.com/react@18/umd/react.development.js"></script>
  <script crossorigin src="https://unpkg.com/react-dom@18/umd/react-dom.development.js"></script>
  <script crossorigin src="https://unpkg.com/@babel/standalone/babel.min.js"></script>
  <script type="text/babel">
    const rootElement = document.getElementById("root");
    const element = <button onClick={() => alert("pressed")} onMouseOut={() => alert("bye")}>Press</button>;
    ReactDOM.render(element, rootElement);
  </script>
  <p id="result"></p>
</body>
</html>

위의 코드를 실행하면 다음과 같이 버튼을 클릭하거나 마우스를 올리면 이벤트가 발생합니다.

위 코드에서 이벤트를 함수로 정의해서 사용해 보겠습니다.

<!DOCTYPE html>
<html lang="en">
<body>
  <div id="root"></div>
  <script crossorigin src="https://unpkg.com/react@18/umd/react.development.js"></script>
  <script crossorigin src="https://unpkg.com/react-dom@18/umd/react-dom.development.js"></script>
  <script crossorigin src="https://unpkg.com/@babel/standalone/babel.min.js"></script>
  <script type="text/babel">
    const rootElement = document.getElementById("root");
    const handleClick = () => alert("pressed");
    const handleMouseOut = () => alert("bye");
    const element = <button onClick={handleClick} onMouseOut={handleMouseOut}>Press</button>;
    ReactDOM.render(element, rootElement);
  </script>
  <p id="result"></p>
</body>
</html>

이렇게 React에서 이벤트를 핸들링하는 방법에 대해서 알아보았습니다.

감사합니다.

< 목록으로 돌아가기