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中的值来判断是正确的作法。利用组件的将挂载或已挂载生命周期来变动这个值。
isMounted
此方法已经弃用很久了,主要的原因是它经过实际使用与测试可能不足以检测组件是否挂载,尤其是对于有一些异步的程序情况,以及逻辑上造成混乱。setState本身可以提供一些错误的检查,不需要这个isMounted
先作检查。参考: https://facebook.github.io/re...与https://github.com/facebook/r...componentDidMount
是生命周期方法,继承得来的,所以独立写出来。