react.js - react es5的isMounted在es6中不支持,请问有什么解决办法

查看:154
本文介绍了react.js - react es5的isMounted在es6中不支持,请问有什么解决办法的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

es5中

componentDidMount: function() {
    $.get(this.props.source, function(result) {
      if (this.isMounted()) {
        this.setState({
          ...
        });
      }
    }.bind(this));
  }

报错信息:Warning: isMounted(...) is deprecated in plain JavaScript React classes. Instead

问题1:请问componentDidMount方法在es6中是否应写在constructor里,还是单独写一个方法?
问题2: this.isMounted es6语法不支持(网上的说法是es6不支持autobind),请教高玩有没有什么替代办法?

解决方案

楼上的范例是正确的,以下附加说明。

用一个state中的值来判断是正确的作法。利用组件的将挂载或已挂载生命周期来变动这个值。

componentDidMount() {
    this.mounted = true;
}

componentWillUnmount() {
    this.mounted = false;
}

isMounted此方法已经弃用很久了,主要的原因是它经过实际使用与测试可能不足以检测组件是否挂载,尤其是对于有一些异步的程序情况,以及逻辑上造成混乱。setState本身可以提供一些错误的检查,不需要这个isMounted先作检查。参考: https://facebook.github.io/re...https://github.com/facebook/r...

componentDidMount是生命周期方法,继承得来的,所以独立写出来。

这篇关于react.js - react es5的isMounted在es6中不支持,请问有什么解决办法的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆