返回介绍

为什么 isMounted() 是一个反模式,而正确的解决方案是什么?

发布于 2024-09-16 12:15:13 字数 446 浏览 0 评论 0 收藏 0

isMounted() 的主要场景是避免在组件卸载后调用 setState() ,因为它会发出警告。

if (this.isMounted()) {
  this.setState({...})
}

在调用 setState() 之前检查 isMounted() 会消除警告,但也会破坏警告的目的。使用 isMounted() 有一种代码味道,因为你要检查的唯一原因是你认为在卸载组件后可能持有引用。

最佳解决方案是找到在组件卸载后调用 setState() 的位置,并修复它们。这种情况最常发生在回调中,即组件正在等待某些数据并在数据到达之前卸载。理想情况下,在卸载之前,应在 componentWillUnmount() 中取消任何回调。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文