fix: scrollbar effect
parent
26f32b6176
commit
08af211204
@ -0,0 +1,31 @@
|
|||||||
|
import { useEffect, useState } from 'react'
|
||||||
|
|
||||||
|
const useCheckVerticalScrollbar = (ref: React.RefObject<HTMLElement>) => {
|
||||||
|
const [hasVerticalScrollbar, setHasVerticalScrollbar] = useState(false)
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
const elem = ref.current
|
||||||
|
if (!elem) return
|
||||||
|
|
||||||
|
const checkScrollbar = () => {
|
||||||
|
setHasVerticalScrollbar(elem.scrollHeight > elem.clientHeight)
|
||||||
|
}
|
||||||
|
|
||||||
|
checkScrollbar()
|
||||||
|
|
||||||
|
const resizeObserver = new ResizeObserver(checkScrollbar)
|
||||||
|
resizeObserver.observe(elem)
|
||||||
|
|
||||||
|
const mutationObserver = new MutationObserver(checkScrollbar)
|
||||||
|
mutationObserver.observe(elem, { childList: true, subtree: true, characterData: true })
|
||||||
|
|
||||||
|
return () => {
|
||||||
|
resizeObserver.disconnect()
|
||||||
|
mutationObserver.disconnect()
|
||||||
|
}
|
||||||
|
}, [ref])
|
||||||
|
|
||||||
|
return hasVerticalScrollbar
|
||||||
|
}
|
||||||
|
|
||||||
|
export default useCheckVerticalScrollbar
|
||||||
Loading…
Reference in New Issue