Javascript ES6 setInterval(()=>;foo(),1000与setInterval(foo,1000)
我正在学习React,并遵循本教程 它在react组件类中设置了一个间隔,使用的语法是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)这样的箭头函数中有什么区别呢?我原以为没有什么区别,但去掉箭头函数中的包裹,时钟就不工作了。怎么回事?这里有
setInterval(()=>this.tick(),1000)
其中tick是Clock
组件中的一个方法。我的问题是:这个箭头函数只调用this.tick()
当调用它时,setInterval
将调用它,那么只传入this.tick
而不将其包装在像sosetInterval(this.tick,1000)这样的箭头函数中有什么区别呢
?我原以为没有什么区别,但去掉箭头函数中的包裹,时钟就不工作了。怎么回事?这里有一个指向代码笔的链接,演示了这个问题(第12行)听起来与如何操作有关。使用箭头函数,您可以通过闭包作用域从React组件获得this
。如果没有箭头函数,则调用的this.tick
具有不同的(或否)this
在构造函数中添加这个函数,它将在没有arrow函数的情况下工作
this.tick=this.tick.bind(this)