1
0
mirror of synced 2025-12-20 18:36:31 -05:00
Files
docs/components/hooks/useWindowScroll.ts
Mike Surowiec 06d8f81401 Two-pane Experiment (#21092)
* pull changes from docs-playground

* cleanup, add callout banner

* cleanup linting and test fixes

* add discussion link

Co-authored-by: James M. Greene <JamesMGreene@github.com>
2021-08-26 14:19:40 -04:00

25 lines
627 B
TypeScript

import { useState, useEffect } from 'react'
// returns scroll position
export function useWindowScroll(): number {
const [scrollPosition, setScrollPosition] = useState(
typeof window !== 'undefined' ? window.scrollY : 0
)
useEffect(() => {
const setScollPositionCallback = () => setScrollPosition(window.scrollY)
if (typeof window !== 'undefined') {
window.addEventListener('scroll', setScollPositionCallback)
}
return () => {
if (typeof window !== 'undefined') {
window.removeEventListener('scroll', setScollPositionCallback)
}
}
}, [])
return scrollPosition
}