react에 있는 모든 component는 reference element를 가지고 있음

UseClick

const useClick=(onClick)=>{
  if(typeof onClick !=="function"){
    return;
  }
  const element=useRef();
  useEffect(()=>{
    if(element.current){
      element.current.addEventListener("click",onClick);
    }
    return ()=>{
      if(element.current(){
        element.current.removeEventListener("click",onClick);
      }
    };//componentWillunmount일때 return의 function 호출
  },[]);//no dependency
  return element;
};
 const element=useRef();
  useEffect(()=>{
    if(element.current){
      element.current.addEventListener("click",onClick);
    }

component가 mount되었을 때 실행한다.

component가 unmount 일 때, 이벤트가 발생한 후 정리할 필요가 있다..

return ()=>{
      if(element.current(){
        element.current.removeEventListener("click",onClick);
      }
    };
  },[]);

마지막에 []를 넣어주어 componentDidMount때 단 한번만 실행되라는 의미가 되게 해준다.

componentWillunmount일때 return의 function 호출