我什么时候需要在reactJS中使用bind()并使用react native



所以当我创建一个类时,它通常看起来像这个

export default class SettingsIndex extends Component {
constructor(props) {
super(props);
this.state = {
testValue: 1,
};
}
myfunction(){
this.setstate({value: 2)
}
render(){
return(
........

问题1:老实说,我不确定什么时候我真的需要构造函数,我的理解是,每次类从父组件接收道具时,我都需要声明构造函数,这是假设修正吗?

问题2:请参阅myfunction(),在某些类中,它可以正常工作,但在一些类中,我收到一个错误,说"this.myfunction"未定义,然后我需要在像这样的构造函数中绑定(this(

this.myfunction= this.myfunction.bind(this);

我不知道为什么this在某些类中是可访问的,而在其他类中是不可访问的?

只有当您需要在第一次渲染之前运行一些初始化逻辑时,才需要使用构造函数,例如初始化引用、状态或绑定函数。您不需要构造函数,因为您的组件正在接收道具,React本身可以为您进行道具转发

对于您的情况,您也可以通过适当的babel设置将state定义为类初始化程序,并去掉构造函数

export default class SettingsIndex extends Component {
state = {
testValue: 1,
};
myfunction(){
this.setstate({value: 2)
}
}

现在,就绑定的问题而言,您首先需要了解函数是如何接收其contextthis变量的。

函数调用的this自变量被接收为调用函数的对象的引用,除非函数被定义为箭头函数,在这种情况下,它从其周围的作用域继承了this变量,或者通过使用调用、应用或绑定方法显式重写

例如,在React的生命周期方法中,this变量已经指向类实例,使用this.myFunction()调用函数将导致myFunction接收类的上下文,因为调用它的对象是this

另一方面,当您将函数分配给事件处理程序时,您正在为其分配一个引用,当事件发生时,该函数会在窗口引用上调用,从而导致this未定义,从而使您能够使用arrow functionexplicit bind来提供正确的上下文。

查看此SO帖子以了解有关此关键字的更多详细信息

最新更新