我正在尝试在settimeout中调度一个动作,但是收到错误。我在容器中有这个代码
代码
setTimeout(function(){ this.props.getData(); }, 3000);
错误
Uncaught TypeError: Cannot read property 'getData' of undefined
但是this.props.getData();
在settimeout之外正常工作
答案 0 :(得分:3)
this
不会引用您的组件类。如果setTimeout
调用的唯一内容是this.props.getData
,那么您不需要新功能来执行此操作:
setTimeout(this.props.getData, 3000);
如果你需要在回调函数中做额外的工作,那么你可以使用lambda函数,因为this
将与外部作用域相同:
setTimeout(() => {
// do something else
this.props.getData();
}, 3000);
答案 1 :(得分:2)
您必须将this
绑定到setTimeout
的回调。
像这样:setTimeout(function(){ this.props.getData(); }.bind(this), 3000);
OR
setTimeout(()=>{this.props.getData();},3000)
答案 2 :(得分:2)
this
中的setTimeout()
不是您期望的this
。尝试将函数绑定到当前上下文,看看是否有效。
setTimeout(function(){
this.props.getData();
}.bind(this), 3000);
或者您可以像这样使用箭头功能:
setTimeout(() => this.props.getData(), 3000);
箭头功能无环境。它们继承了父上下文。
参考文献: