removeEventListener(’’,callBack) 中的callBack不执行
源码 let defaultScrollY = 0;useEffect(()=>{ window.addEventListener('scroll',() => { defaultScrollY = window.scrollY; }); return ()=> { console.log('卸载'); window.removeEventListener('scroll',() => { console.log('清除'); }); }; },[]); 打印结果卸载
原因addEventListener 和 removeEventListener 中使用了箭头函数,实际上不是同一个函数
解决方案 useEffect(()=>{ console.log(window.scrollY); /** 回调 */ const callBack = () => { defaultScrollY = window.scrollY; }; window.addEventListener('scroll',callBack); return ()=> { window.removeEventListener('scroll',callBack); }; },[]);设为同一个callBack,如果有不同需求,可以通过传参来区分两者区别