我们如何在setTimeout中使用setState
。我在构造函数中声明了一个属性。我在this.setState({ count: index });
内使用了setTimeout
,它会抛出类似Uncaught TypeError: this.setState is not a function
constructor(props) {
super(props);
this.state = {
count: 0
};
this.onMouseDown = this.onMouseDown.bind(this);
}
onMouseDown() {
this.timer();
}
timer() {
for (var i = 1; i <= 90; i++) {
(function(index) {
setTimeout(function() {
this.setState({ count: index });
}, index * 10);
})(i);
}
}
我尝试了很多,不知道如何解决这个问题。为什么这是错的?。请让我摆脱这个问题..
答案 0 :(得分:0)
this
未引用此组件。setState
在组件this
上定义
timer() {
const objThis = this; //store this.
for (var i = 1; i <= 90; i++) {
(function(index) {
setTimeout(function() {
objThis.setState({ count: index });
}, index * 10);
})(i);
}
}