首页 > 解决方案 > ES6 setInterval(() => foo(), 1000 与 setInterval(foo, 1000)

问题描述

我正在学习 React,我正在关注本教程 https://reactjs.org/docs/state-and-lifecycle.html并在其中设置了一个间隔在反应组件类中,使用的语法是setInterval(() => this.tick(), 1000)打勾的地方是Clock组件中的一个方法。我的问题是:所以这个箭头函数只是this.tick()在它被调用时调用,并且会调用它,那么只传入而不将它包装在像这样的箭头函数中有setInterval什么区别?我认为没有区别,但是删除箭头函数中的包装并且时钟不起作用。这是怎么回事?这是一个演示问题的代码笔链接https://codepen.io/anon/pen/aKNJGd?editors=0011(第 12 行)this.ticksetInterval(this.tick, 1000)

标签: javascriptreactjsecmascript-6setintervalarrow-functions

解决方案


听起来与thisJavascript 中的工作方式有关。使用箭头函数,您可以this通过闭包范围从 React 组件获取。没有箭头函数,this.tick被调用的 有不同的(或没有)this

在你的构造函数中添加它,它可以在没有箭头函数的情况下工作。

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


推荐阅读