【发布时间】:2019-12-18 13:23:47
【问题描述】:
我正在尝试根据个人是否在组件上向下滚动来控制 React 组件的可见性。可见性作为“in”属性传递给Fade 元素。
我已经使用 UseEffect Hook 设置了一个侦听器,它在Mount 上添加了侦听器。实际的 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">
....
【问题讨论】:
标签: javascript reactjs react-hooks