Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/24.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 ES6 setInterval(()=>;foo(),1000与setInterval(foo,1000)_Javascript_Reactjs_Ecmascript 6_Setinterval_Arrow Functions - Fatal编程技术网

Javascript ES6 setInterval(()=>;foo(),1000与setInterval(foo,1000)

Javascript ES6 setInterval(()=>;foo(),1000与setInterval(foo,1000),javascript,reactjs,ecmascript-6,setinterval,arrow-functions,Javascript,Reactjs,Ecmascript 6,Setinterval,Arrow Functions,我正在学习React,并遵循本教程 它在react组件类中设置了一个间隔,使用的语法是setInterval(()=>this.tick(),1000)其中tick是Clock组件中的一个方法。我的问题是:这个箭头函数只调用this.tick()当调用它时,setInterval将调用它,那么只传入this.tick而不将其包装在像sosetInterval(this.tick,1000)这样的箭头函数中有什么区别呢?我原以为没有什么区别,但去掉箭头函数中的包裹,时钟就不工作了。怎么回事?这里有

我正在学习React,并遵循本教程 它在react组件类中设置了一个间隔,使用的语法是
setInterval(()=>this.tick(),1000)
其中tick是
Clock
组件中的一个方法。我的问题是:这个箭头函数只调用
this.tick()
当调用它时,
setInterval
将调用它,那么只传入
this.tick
而不将其包装在像so
setInterval(this.tick,1000)这样的箭头函数中有什么区别呢
?我原以为没有什么区别,但去掉箭头函数中的包裹,时钟就不工作了。怎么回事?这里有一个指向代码笔的链接,演示了这个问题(第12行)

听起来与如何操作有关。使用箭头函数,您可以通过闭包作用域从React组件获得
this
。如果没有箭头函数,则调用的
this.tick
具有不同的(或否)
this

在构造函数中添加这个函数,它将在没有arrow函数的情况下工作

this.tick=this.tick.bind(this)