栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

无法在useEffect之外删除事件侦听器

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

无法在useEffect之外删除事件侦听器

它不起作用的原因是因为

setPageHeightWrapper
定义了一个内联函数,并且当该组件重新呈现它的新实例时,并且在清除事件侦听器时,您需要传递与设置侦听器时传递的方法相同的方法。

另一方面,当调用useEffect挂钩时,它会从其关闭处获取函数引用,并且使用相同的引用来清除侦听器。

使removeListener在useEffect之外工作的一种方法是使用

useCallback
钩子

const handleSearch = () => {  window.removeEventListener('resize', memoHeightWrapper);};const [pageHeight, setPageHeight] = useState(0);const memoHeightWrapper = useCallback(() => {    setPageHeight(window.innerHeight);})useEffect(() =>{  window.addEventListener('resize', memoHeightWrapper);  return () => {    window.removeEventListener('resize', memoHeightWrapper);  };}, []);


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/403939.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号