Javascript 如何';这';在生命周期方法中工作?
我是react js新手,一直在阅读react文档。在其中一个示例中,一个属性(this.timerID)是在一个生命周期方法中定义的(而不是在构造函数中),它将继续在另一个方法中使用。我很难理解属性中的“this”如何帮助扩大其范围 确切的文件在。我一直在对“这个”进行进一步的研究。我不知道是我对ES6类方法的理解还是“这个”导致了问题Javascript 如何';这';在生命周期方法中工作?,javascript,reactjs,Javascript,Reactjs,我是react js新手,一直在阅读react文档。在其中一个示例中,一个属性(this.timerID)是在一个生命周期方法中定义的(而不是在构造函数中),它将继续在另一个方法中使用。我很难理解属性中的“this”如何帮助扩大其范围 确切的文件在。我一直在对“这个”进行进一步的研究。我不知道是我对ES6类方法的理解还是“这个”导致了问题 class Clock extends Component { constructor(){ ... } componentDidMount(
class Clock extends Component {
constructor(){
...
}
componentDidMount(){
this.timerID = setInterval(() => this.tick(), 1000)
}
componentWillUnmount(){
clearInterval(this.timerID);
}
}
如果问题有点含糊,我们深表歉意,并感谢您的帮助。这是指组件的当前实例。因此,在您的示例中,您正在为您的实例设置间隔。当您将
此
关键字与变量或对象一起使用时,它将在当前范围内引用。这里的ComponentDidMount
是一个类生命周期方法,当一个变量在类的任何方法
中指定了this
关键字时,则表示它正在访问该类的变量,而不是它自己的变量
这里,在您的示例中,this.timerID
变量由整个类范围内的ComponentDidMount
用于更改状态变量,然后呈现组件。如果在ComponentDidMount中使用var timerID
,则其工作原理相同,但如果要在其他函数中使用timerID
,则此项。timerID
将显示为未定义,因为它仅在装入时可用,并且其范围仅在该方法内部
问题是,您使用的所有内容都必须有一个定义的范围
这里,这个关键字只是详细说明了要在类中使用的变量的范围。就是这样,只有正确的方法来管理变量/对象,才能完成工作。您在“属性中的‘this’如何帮助增加其范围”中的意思是什么?文档解释说,引入‘this’是为了将变量添加为附加字段。由于它没有在构造函数中声明,我想知道如何在如上所示的下一个方法中使用它?
componentDidMount
在componentWillUnmount
之前运行。在componentDidMount
中,为组件设置属性timerID
。所以在componentWillUnmount
中,您可以使用它的当前实例-是否有前一个实例?