Event Handler : 이벤트가 발생했을 때 브라우저에 호출을 위임한 함수
즉, 이벤트가 발생하면 브라우저에 의해 호출될 함수
이번에는 리액트에서 이벤트 핸들링하는 것을 알아보겠다.
우선 기존 HTML에서 DOM요소에 이벤트 핸들링하는 것을 살펴본 뒤
리액트에서 이벤트 핸들링하는 법을 살펴보겠다.
index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Document</title>
</head>
<body>
<button onclick="sayhi('Jev')">Click</button>
<script>
function sayhi(name) {
console.log(`Hello , ${name}`);
}
</script>
</body>
</html>
어트리뷰트값으로 값을 할 경우 함수에 인수를 넣기 위해 함수호출문을 할당하는 것을 허용한다.
(기존의 이벤트 핸들러라하면 함수 참조가 들어가는게 맞다.)
그렇다면 html과 비슷하게 작성하는 JSX에서는 이벤트 핸들러를 어떻게 등록하는지 살펴보자.
Test.js
import React from "react";
const Test = (props) => {
return (
<div>
<h1>Test</h1>
<button
onClick={() => {
console.log("Hello,Jev!");
}}
>
Click
</button>
</div>
);
};
export default Test;
onclick => onClick
짧고 일회용적인 코드라면 JSX내부에 작성하지만 재사용성이 크고 코드가 길다면 따로 함수를 만들어 가져다 쓴다.
import React from "react";
const Test = (props) => {
function sayhi() {
console.log("Hello,Jev");
}
return (
<div>
<h1>Test</h1>
<button onClick={sayhi}>Click</button>
</div>
);
};
export default Test;
이처럼 기존 HTML과 약간의 문법의 차이는 있지만 비슷하여 사용하기 편리하다.