javascript - 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.tick
setInterval(this.tick, 1000)
解决方案
听起来与this
Javascript 中的工作方式有关。使用箭头函数,您可以this
通过闭包范围从 React 组件获取。没有箭头函数,this.tick
被调用的 有不同的(或没有)this
。
在你的构造函数中添加它,它可以在没有箭头函数的情况下工作。
this.tick = this.tick.bind(this)
推荐阅读
- c++ - 在 std::condition_variable 中调用后由于 INVALID PARAMETER 导致应用程序崩溃
- cordova - Ionic 3 cordova media play on button click 不能在 android 上工作,但在 web 视图中工作
- c++ - 如何在 C++ 中创建临时变量
- javascript - 手机没有网址栏
- go - 不明显的死锁情况
- c# - C# innerhtml 正则表达式
- c# - HttpWebRequest从c#上传docx文件到curl python
- ansible - 配置时自动获取gitlab注册token
- python - 绘图标签在 tkinter 画布上的图形之外
- c# - 在 c# 中从 JSON API 反序列化 HttpWebResponse