我在这里抽象了我的React代码。我没有绑定"这个"方法A()。也就是说,在构造函数中我没有这样做
this.A = this.A.bind(this);
也没有使用任何箭头语法进行绑定。
所以编译器无法知道A()中 this 的值是什么。
由于我在A()中使用了 this.map ,因此编译器应该为此用法抛出错误。在检查Chrome开发工具中的代码时,我发现编译器似乎正在var _this2 = this
自动正确地分配此的值。我无法理解这种行为。有人可以解释一下这个。 (我是React的新手。如果这个问题听起来很傻,请小心)
class Test extends React.Component{
constructor(props){
super(props);
this.map = [];
this.state = { a: 1};
}
A(){
// some complex logic
this.map = Complexlogic() ;
}
componentWillMount(){
this.A();
}
}
答案 0 :(得分:2)
React为此目的部分创建了类构造。按照设计,在类构造中创建的任何东西都绑定到对象上下文,就像在任何其他语言的类中一样。
为什么你经常会看到被约束的功能'内部类构造用于何时必须在类上下文之外传递,但是您希望维护该函数的对象的上下文。例如,当您将函数传递给渲染调用中的组件时。
至于为什么你会看到" _this2" - 它只是一种反应管理几种不同的方式"这个"在特定时间可用的上下文。