-js- React"组件确实安装了#34;例如

时间:2016-12-23 22:00:57

标签: javascript reactjs

我试图开始做出反应。在检查代码示例后,我遇到了一个非常奇怪的事情。这是链接[React tutorial]。这是生命周期部分的代码;

componentDidMount() {
this.timerID = setInterval(
  () => this.tick(),
  1000
);
}

那么,在设置间隔时为什么使用箭头功能?我试过了(this.tick()本身)但它并没有像预期的那样工作。

1 个答案:

答案 0 :(得分:1)

setInterval需要传递一个函数引用,所以你可以写

setInterval(  () => this.tick(),  1000  );

这不会运行this.tick,它只是告诉setInterval在选择时运行tick。箭头函数将'this'绑定为您的组件。

但是setInterval( function () { this.tick(); }, 1000 );不会将此绑定为您的组件,因此您需要编写setInterval(this.tick.bind(this), 1000 );

如果你写     setInterval( this.tick(), 1000 );然后在传递给setInterval之前运行tick,并且tick的返回值是setInterval将使用的。

我希望说清楚。 setInterval只需要对函数的引用:)