Design-loving front-end engineer
Ryong
Design-loving front-end engineer
์ „์ฒด ๋ฐฉ๋ฌธ์ž
์˜ค๋Š˜
์–ด์ œ
    • Framework
    • React
      • Concept
      • Library
      • Hook
      • Component
      • Test
    • NodeJS
    • Android
      • Concept
      • Code
      • Sunflower
      • Etc
    • Flutter
      • Concept
      • Package
    • Web
    • Web
    • CSS
    • Language
    • JavaScript
    • TypeScript
    • Kotlin
    • Dart
    • Algorithm
    • Data Structure
    • Programmers
    • Management
    • Git
    • Editor
    • VSCode
    • Knowledge
    • Voice
Design-loving front-end engineer

Ryong

React/Hook

[ Hook ] useBeforeLeave

2022. 8. 10. 10:09

๐Ÿ”ด  Introduction

โšช  ๋งˆ์šฐ์Šค๊ฐ€ ๋ธŒ๋ผ์šฐ์ € ์ฐฝ์˜ ๋ฐ”๊นฅ์œผ๋กœ ๋ฒ—์–ด๋‚ฌ์„ ๋•Œ, ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ๋ฐ›์€ onLeave ํ•จ์ˆ˜๋ฅผ ์‹คํ–‰์‹œํ‚ค๋Š” hook

 

๐ŸŸ   Hook

 
import { useEffect } from "react";

export const useBeforeLeave = (onLeave) => {
    const handle = (event) => {
        const { clientY } = event;
        if (clientY <= 0) {
            onLeave(); // ๋งˆ์šฐ์Šค๊ฐ€ ์ฐฝ์˜ ์œ„์ชฝ์œผ๋กœ ๋ฒ—์–ด๋‚ฌ์„ ๋•Œ
        }
    };

    useEffect(() => {
        if (typeof onLeave !== "function") {
            return;
        } else {
            document.addEventListener("mouseleave", handle);
        }
        return () => document.removeEventListener("mouseleave", handle);
    }, []);
};

 

๐ŸŸก  Usage

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

function App() {
    const begForLife = () => console.log("Please don't leave browser");
    useBeforeLeave(begForLife);
    return (
        <div className="App">
            <div>Hi</div>
        </div>
    );
}

export default App;

 

์ €์ž‘์žํ‘œ์‹œ (์ƒˆ์ฐฝ์—ด๋ฆผ)

'React > Hook' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[ Hook ] useScroll  (0) 2022.08.10
[ Hook ] usePreventLeave  (0) 2022.08.10
[ Hook ] useNotification  (0) 2022.08.10
[ Hook ] useHover  (0) 2022.08.10
[ Hook ] useConfirm  (0) 2022.08.10
    'React/Hook' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
    • [ Hook ] usePreventLeave
    • [ Hook ] useNotification
    • [ Hook ] useHover
    • [ Hook ] useConfirm
    Design-loving front-end engineer
    Design-loving front-end engineer
    ๋””์ž์ธ์— ๊ด€์‹ฌ์ด ๋งŽ์€ ๋ชจ๋ฐ”์ผ ์•ฑ ์—”์ง€๋‹ˆ์–ด Ryong์ž…๋‹ˆ๋‹ค.

    ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”