是什么让我半夜十一点还在这敲代码,是责任心吗?是上进心吗?
都不是,是这个react该死的useState和useEffect组合使用的晦涩难解。
简单阐述一下今晚遇到的问题吧:
useEffect(() => {
console.log(myContext);
document.addEventListener("scroll", function () {
//页面卷去高度 + 浏览器可视窗口的高度 >= 整个页面的高度
if (
window.scrollY + window.innerHeight >= document.body.offsetHeight &&
flag
) {
flag = false;
setTimeout(() => {
let a = pageNum + 1;
setPageNum(a);
}, 500);
console.log("到达底部", flag);
}
});
}, [myContext]);
如这段代码,我在初始化的时候想要监听页面的触底事件,当页面触底的时候,执行pageNum的自增操作,以实现无感翻页的效果,但是,在useState()使用pageNum++的时候,我遇到了问题,当state发生变化的时候,整个函数会重新运行,这样就会使得react抛出一个bug:“Assignment to constant variable.”