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 ] useScroll

2022. 8. 10. 11:27

πŸ”΄  Introduction

βšͺ  ν˜„μž¬ 슀크둀의 y μ’Œν‘œ 값을 κ΅¬ν•΄μ„œ λ¦¬ν„΄ν•΄μ£ΌλŠ” Hook

 

🟠  Hook

 
import { useState, useEffect } from "react";

export const useScroll = () => {
    const [state, setState] = useState({
        x: 0,
        y: 0,
    });
    const onScroll = () => {
        setState({ y: window.scrollY, x: window.scrollX });
    };
    useEffect(() => {
        window.addEventListener("scroll", onScroll);
        return () => window.removeEventListener("scroll", onScroll);
    }, []);
    return state;
};

 

🟑  Usage

 
import styled from "styled-components";
import { useScroll } from "./hooks/useScroll";

function App() {
    const { y } = useScroll();
    return <Box style={{ backgroundColor: y > 100 ? "red" : "blue" }}></Box>;
}

const Box = styled.div`
    height: 200vh;
`;

export default App;

 

μ €μž‘μžν‘œμ‹œ (μƒˆμ°½μ—΄λ¦Ό)

'React > Hook' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

[ Hook ] usePreventLeave  (0) 2022.08.10
[ Hook ] useNotification  (0) 2022.08.10
[ Hook ] useHover  (0) 2022.08.10
[ Hook ] useConfirm  (0) 2022.08.10
[ Hook ] useBeforeLeave  (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μž…λ‹ˆλ‹€.

    ν‹°μŠ€ν† λ¦¬νˆ΄λ°”