React/Hook

[ Hook ] useHover

Design-loving front-end engineer 2022. 8. 10. 10:50

๐Ÿ”ด  Introduction

โšช  ์ปดํฌ๋„ŒํŠธ์— Hover ์ด๋ฒคํŠธ ๋ฐœ์ƒ์‹œ ์ „๋‹ฌํ•œ ํ•จ์ˆ˜๋ฅผ ์‹คํ–‰์‹œ์ผœ์ฃผ๋Š” Hook

 

๐ŸŸ   Hook

 
import { useEffect, useRef } from "react";

export const useHover = (onHover) => {
    const element = useRef();
    useEffect(() => {
        if (typeof onHover !== "function") {
            return;
        }
        if (element.current) {
            element.current.addEventListener("mouseenter", onHover);
        }
        return () => {
            if (element.current) {
                element.current.removeEventListener("mouseenter", onHover);
            }
        };
    }, []);
    return element;
};

 

๐ŸŸก  Usage

 
import { useHover } from "./hooks/useHover";

function App() {
    const sayHello = () => console.log("say hello");
    const title = useHover(sayHello);
    return (
        <div className="App">
            <h1 ref={title}>Hi</h1>
        </div>
    );
}

export default App;