如何修复:Can';t在未安装的组件Next.js | | onScroll事件上执行反应状态更新
这是密码如何修复:Can';t在未安装的组件Next.js | | onScroll事件上执行反应状态更新,next.js,use-state,onscroll,Next.js,Use State,Onscroll,这是密码 const [scroll, setScroll] = useState(false); useEffect(() => { window.addEventListener("scroll", () => { setScroll(window.scrollY > specify_height_you_want_to_change_after_here); }); }, []); 获取此错误 警告:无法对未安装的组件执行
const [scroll, setScroll] = useState(false);
useEffect(() => {
window.addEventListener("scroll", () => {
setScroll(window.scrollY > specify_height_you_want_to_change_after_here);
});
}, []);
获取此错误
警告:无法对未安装的组件执行React状态更新。这是一个no-op,但它表示应用程序中存在内存泄漏。要修复此问题,请取消useEffect清理功能中的所有订阅和异步任务。您需要删除useEffect清理功能中的事件侦听器。此函数在组件卸载时运行
useEffect(() => {
window.addEventListener("scroll", () => {
setScroll(window.scrollY > specify_height_you_want_to_change_after_here);
});
return () => window.removeEventListener("scroll", () => {
setScroll(window.scrollY > specify_height_you_want_to_change_after_here);
});
}, []);
为了使代码更具可读性,您可能希望将侦听器分离到一个单独的函数
useEffect(() => {
const scrollListener = () => {
setScroll(window.scrollY > specify_height_you_want_to_change_after_here);
}
window.addEventListener("scroll", scrollListener);
return () => window.removeEventListener('scroll', scrollListener);
}, []);