или как установить логическое значение, когда прокрутка происходит в определенной области
Всем привет! Вот начало новой серии, о которой я думал, где я записал небольшой код, который я нашел очень полезным в течение моей недели и, надеюсь, не достаточно сложным для понимания.
Сегодня я покажу вам пример того, как обнаружить прокрутку в первых 100 пикселях и в результате условно отрендерить что-то. Это реальный рабочий пример, который я использовал, когда у меня была кнопка, которую я хотел видеть только тогда, когда я был в самом верху страницы.
import { useEffect, useState } from 'react' function MyComponent() { const [scrolled, setScrolled] = useState(false) useEffect(() => { const handleScroll = () => { const scrollY = window.scrollY if (scrollY > 100) { setScrolled(true) } else { setScrolled(false) } } window.addEventListener('scroll', handleScroll) return () => { window.removeEventListener('scroll', handleScroll) } }, []) return ( <div> {scrolled ? ( <p>You have scrolled more than 100 pixels!</p> ) : ( <p>Keep scrolling...</p> )} </div> ) }
В этом фрагменте кода мы используем хук useEffect, чтобы добавить в окно прослушиватель прокрутки. Всякий раз, когда пользователь прокручивает, мы проверяем значение `window.scrollY` и соответствующим образом обновляем наше состояние `scrolled`. Мы также очищаем прослушиватель при размонтировании компонента.
В вашей фактической реализации вы можете настроить пороговое значение (в данном случае `100`) или использовать версию `handleScroll()` с подавлением дребезга для повышения производительности.
Вот и все! До следующего раза :)