Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/436.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何';这';在生命周期方法中工作?_Javascript_Reactjs - Fatal编程技术网

Javascript 如何';这';在生命周期方法中工作?

Javascript 如何';这';在生命周期方法中工作?,javascript,reactjs,Javascript,Reactjs,我是react js新手,一直在阅读react文档。在其中一个示例中,一个属性(this.timerID)是在一个生命周期方法中定义的(而不是在构造函数中),它将继续在另一个方法中使用。我很难理解属性中的“this”如何帮助扩大其范围 确切的文件在。我一直在对“这个”进行进一步的研究。我不知道是我对ES6类方法的理解还是“这个”导致了问题 class Clock extends Component { constructor(){ ... } componentDidMount(

我是react js新手,一直在阅读react文档。在其中一个示例中,一个属性(this.timerID)是在一个生命周期方法中定义的(而不是在构造函数中),它将继续在另一个方法中使用。我很难理解属性中的“this”如何帮助扩大其范围

确切的文件在。我一直在对“这个”进行进一步的研究。我不知道是我对ES6类方法的理解还是“这个”导致了问题

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
中,您可以使用它的当前实例-是否有前一个实例?