【发布时间】:2021-02-06 11:52:31
【问题描述】:
在某个组件进入视口后,我必须在它上实现一些自定义动画,在桌面模式下它应该被触发
window.scrollY > 1200
它适用于桌面但不适用于移动模式,问题是在移动模式下我的 window.scrollY 永远不会达到 1200。
我应该如何管理这样的滚动效果的响应性?
export default function Layout() {
const [navColor, setNavColor] = useState(null);
const [x, setX] = useState(null);
const pop = () => {
console.log(window.scrollY);
if(window.scrollY > 1200){
setX(classes.Swipe);
}
if(window.scrollY > 927) {
setNavColor('red');
}
else{
setNavColor(null);
}
}
window.addEventListener('scroll', () => pop());
return (
<div className={classes.Layout}>
<Video/>
<Navbar color={navColor}/>
<Picture />
<AboutMe />
<div className={classes.c}>tessdfsdfsfdst div</div>
<div className={[ x,classes.Div].join(' ')}>
</div>
</div>
);
}
【问题讨论】:
-
见:stackoverflow.com/questions/2256432/…。侧节点:每次重新渲染组件时添加弹出处理程序。您应该使用 useEffect 挂钩只添加一次侦听器!
标签: reactjs animation scroll viewport