我试图根据个人是否在组件上向下滚动来控制 React 组件的可见性。可见性Fade
作为“in”属性传递到元素中。
我已经使用 UseEffect Hook 设置了一个侦听器,它添加了 onMount 侦听器。实际的 onScroll 函数应该更新 scrollTop 状态(它是到页面顶部的高度的当前值),然后是滚动状态(将事件的滚动到页面顶部与之前的状态进行比较,以及如果第一个大于第二个,则返回 true)。
但是,由于某种原因 setScrollTop 钩子不起作用,滚动状态继续保持在 0。
我究竟做错了什么?这是完整的组件:
export const Header = (props) => {
const classes = useStyles();
const [scrolling, setScrolling] = useState(false);
const [scrollTop, setScrollTop] = useState(0);
const onScroll = (e) => {
setScrollTop(e.target.documentElement.scrollTop);
setScrolling(e.target.documentElement.scrollTop > scrollTop);
}
useEffect(() => {
window.addEventListener('scroll', onScroll);
},[]);
useEffect(() => {
console.log(scrollTop);
}, [scrollTop])
return (
<Fade in={!scrolling}>
<AppBar className={classes.header} position="fixed">
....