尝试在回调中使用setTimeout
在几秒钟后重置状态,但得到错误未捕获的TypeError:this.setState不是函数
有人可以帮忙吗?
setMainState: function() {
this.setState({
clicked: !this.state.clicked
}, this.delayState());
},
delayState: function() {
setTimeout((function() {
this.setState({
clicked: false
}), 2000}));
},
handleClick: function(event) {
this.setMainState();
},
答案 0 :(得分:1)
这是在setTimeout函数中更改的上下文,因此您需要使用变量来存储该对象self
,然后它将在该函数中相同
setMainState: function() {
this.setState({
clicked: !this.state.clicked
}, this.delayState());
},
delayState: function() {
var self = this;
setTimeout((function() {
self.setState({
clicked: false
}), 2000}));
},
handleClick: function(event) {
this.setMainState();
},