美文网首页
react 异步请求渲染已经销毁的元素的错误的解决

react 异步请求渲染已经销毁的元素的错误的解决

作者: lovinglili | 来源:发表于2018-12-04 19:05 被阅读0次

装饰器在react里面的配置

react项目使用的是create-react-app:

  • 安装此包 @babel/plugin-proposal-decorators;
  • 配置config = injectBabelPlugin(['@babel/plugin-proposal-decorators', { "legacy": true }], config) 如下图


    image.png
 function inject_unount (target) {

    // 改装componentWillUnmount,销毁的时候记录一下
    let next = target.prototype.componentWillUnmount
    target.prototype.componentWillUnmount = function () {
        if (next) next.call(this, ...arguments);//先判断componenteillunmout存在原有的一  些东西不,存在就执行
        this.unmount = true
    }
    // 对setState的改装,setState查看目前是否已经销毁
    let setState = target.prototype.setState //原有的setState
    target.prototype.setState = function () {
        if ( this.unmount ) return ;
        setState.call(this, ...arguments)
    }
 }

@inject_unount
class BaseComponent extends Component {

}
//通过改装这俩函数,当元素销毁的时候,就不再执行setState,不再re-render

相关文章

  • react 异步请求渲染已经销毁的元素的错误的解决

    装饰器在react里面的配置 react项目使用的是create-react-app: 安装此包 @babel/p...

  • React 元素渲染

    React 元素渲染官方传送门 元素渲染 元素是构成 React 应用的最小砖块。 将一个元素渲染为 DOM 想要...

  • React手记

    React手记 1、 2、React元素渲染 React元素渲染是通过方法ReactDOM.render(elem...

  • 组件间的通信

    一、父组件往子传值 父子组件传值,异步请求有可能渲染时报错异步请求时,数据还没有获取到但是此时已经渲染节点了。应该...

  • Vue.js报错—TypeError: Cannot read

    错误:name未定义 原因是ajax是一个异步请求在加载的 解决方法: 因为获取信息是异步请求,所以vue绑定...

  • 将react元素渲染到页面上

    渲染react元素 在第一个例子中就已经接触过了 首先定义react元素 使用ReactDOM.render方法将...

  • [已解决]react异常:Can't perform a Rea

    报错如下: 原因: react组件已经被销毁,而此时我们的异步操作(通常为调用接口更改state操作)还未结束。当...

  • 渲染元素

    渲染元素 上面的代码将element元素渲染到root节点中。 更新已渲染元素 React元素时不可变的。一旦创建...

  • 第七节:React列表渲染与数据收集

    1. 列表渲染 1.1 列表渲染说明: 列表渲染 先将列表数据转为React元素列表, 然后在渲染 React会将...

  • 第七节:React列表渲染与数据收集

    1. 列表渲染 1.1 列表渲染说明: 列表渲染 先将列表数据转为React元素列表, 然后在渲染 React会将...

网友评论

      本文标题:react 异步请求渲染已经销毁的元素的错误的解决

      本文链接:https://www.haomeiwen.com/subject/tepvcqtx.html