mirror of
https://github.com/System-End/site.git
synced 2026-04-19 19:45:07 +00:00
32 lines
798 B
JavaScript
32 lines
798 B
JavaScript
import { useCallback, useEffect, useState } from 'react'
|
|
|
|
const preventDefault = ev => {
|
|
if (ev.preventDefault) {
|
|
ev.preventDefault()
|
|
}
|
|
ev.returnValue = false
|
|
}
|
|
|
|
const enableBodyScroll = () => {
|
|
document && document.removeEventListener('wheel', preventDefault, false)
|
|
}
|
|
const disableBodyScroll = () => {
|
|
document &&
|
|
document.addEventListener('wheel', preventDefault, {
|
|
passive: false
|
|
})
|
|
}
|
|
|
|
export default function usePreventScroll() {
|
|
const [hidden, setHidden] = useState(false)
|
|
|
|
useEffect(() => {
|
|
hidden ? disableBodyScroll() : enableBodyScroll()
|
|
|
|
return enableBodyScroll
|
|
}, [hidden])
|
|
|
|
const disableScroll = useCallback(() => setHidden(true), [])
|
|
const enableScroll = useCallback(() => setHidden(false), [])
|
|
return { disableScroll, enableScroll }
|
|
}
|