useClick
import React, { useEffect, useRef } from "react";
import ReactDOM from "react-dom";
const useClick = (onClick) => {
const element = useRef();
useEffect(() => {
if (typeof onClick === "function") {
// componentDidMount, componentDidUpdate 일 때 실행하는 부분
if (element.current) {
element.current.addEventListener("click", onClick);
}
}
return () => {
// componentWillUnmount 일 때 실행하는 부분
if (element) {
element.removeEventListener("click", onClick);
}
};
}, [onClick]);
return element;
};
const App = () => {
const sayHello = () => console.log("Hello");
const title = useClick(sayHello);
return (
<div className="App">
<h1 ref={title}>Hello</h1>
</div>
//useRef는 refenence를 사용해 component의 어떤 부분을 선택할 수 있는 방법
//document.getElementById()와 동등.
);
};
ReactDOM.render(<App />, document.getElementById("root"));
useEffect는 componentDidMount상태에서 동작한다.
dependency값은 [ ]로 빈 값을 줬기 때문에 값이 update 됐을 때를 고려하지 않아도 된다.
removeEventListener는 componentWillUnMount일때 실행이 된다.
Author And Source
이 문제에 관하여(useClick), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@gktmd652/useClick저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)