首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >反应18中的useEffect清除

反应18中的useEffect清除
EN

Stack Overflow用户
提问于 2022-05-03 08:47:06
回答 2查看 1.3K关注 0票数 1

我用的是next.js的机车卷轴,在反应v18之后我的清理台停止工作了.谁能解释一下原因吗?

代码语言:javascript
复制
useEffect(() => {
let scroll;
import("locomotive-scroll").then((locomotiveModule) => {
  scroll = new locomotiveModule.default({
    el: document.querySelector("[data-scroll-container]"),
    smooth: true,
  });
});

return () => {
  scroll.destroy();
}});

我有错误“未处理的运行时错误TypeError:无法读取未定义的属性(读取‘破坏’)”

*如果我向下安装,对17版本的反应都很好

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-06-08 08:54:13

React v18引入了关于useEffect幂等性的新的开发模式检查.您的效果将被调用一次,然后立即销毁和重新创建。

在您的情况下,问题是import需要一段时间(必须发出网络请求),因此值被赋值给scroll变量,并有一些延迟。不幸的是,您的清理在此之前被调用,所以scrollundefined。这是一种竞争条件,它也会发生在React v17中,但由于它依赖于几个特性(CPU功率、网络速度),所以不太频繁。

有关详细信息,请参阅本文档:https://reactjs.org/blog/2022/03/08/react-18-upgrade-guide.html#updates-to-strict-mode

票数 2
EN

Stack Overflow用户

发布于 2022-06-08 07:49:31

据我所知,然后响应vs18 useEffect自动运行清理。你可以在React18找到它

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72096891

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档