首页 > web前端 > js教程 > 如何修复'无法对未安装的组件执行 React 状态更新”错误?

如何修复'无法对未安装的组件执行 React 状态更新”错误?

Mary-Kate Olsen
发布: 2024-12-04 08:51:15
原创
886 人浏览过

How to Fix

识别有问题的组件

浏览器控制台中提供的堆栈跟踪指示负责状态更新冲突的组件。堆栈跟踪中的每一行代表一个函数调用,括号中提到了组件名称或类构造函数:

  • in TextLayerInternal (由 Context.Consumer 创建)
  • in TextLayer (由 PageInternal 创建)

这表明 TextLayer 组件正在尝试更新其

解决状态更新错误

要解决此问题,您应该在组件卸载之前验证所有异步操作是否已取消或完成在组件WillUnmount中。在您的情况下,这涉及处理可限制函数 setDivSizeThrottleable。

修订后的代码

在修订后的 Book 组件中,您进行了以下更改:

  • 使用以下方法将 setDivSizeThrottleable 转换为可取消函数
  • 在componentWillUnmount中添加了清理函数,用于取消throttleable函数。
class Book extends React.Component {
  setDivSizeThrottleable: ((() => void) & Cancelable) | undefined;
  ...

  componentDidMount = () => {
    this.setDivSizeThrottleable = throttle(
      () => {
        this.setState({
          pdfWidth: this.pdfWrapper!.getBoundingClientRect().width - 5,
        });
      },
      500,
    );

    this.setDivSizeThrottleable();
    window.addEventListener("resize", this.setDivSizeThrottleable);
  };

  componentWillUnmount = () => {
    window.removeEventListener("resize", this.setDivSizeThrottleable!);
    this.setDivSizeThrottleable!.cancel();
    this.setDivSizeThrottleable = undefined;
  };
登录后复制

通过正确处理throttleable函数的取消,可以防止状态更新冲突并解决“无法在未安装的组件上执行 React 状态更新”错误。

以上是如何修复'无法对未安装的组件执行 React 状态更新”错误?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板