为什么收到TypeError:无法读取未定义的属性“现在”

时间:2018-08-03 18:13:19

标签: javascript reactjs progress-bar state

为什么会出现此错误?

相关代码:

this.state = {
    now: 0
}


setInterval(function () {
    this.setState({ now: this.state.now + 1});
}, 100);

我现在尝试增加以更新ProgressBar。

2 个答案:

答案 0 :(得分:0)

您的问题是,当您在函数内部引用“ this”时,这是函数本身而不是外部上下文。 如果您使用的是ecmascript,则可以使用箭头功能

this.state = {
    now: 0
}

setInterval(() =>{
    this.setState({ now: this.state.now + 1});
}, 100);

带有箭头功能“ this”的含义不同。

或者您也可以像这样在上下文之外创建引用。

this.state = {
    now: 0
}

let self = this;

setInterval(function () {
    self.setState({ now: self.state.now + 1});
}, 100);

答案 1 :(得分:-1)

可能是在间隔函数运行“ this”时与调用setInteval时的含义不同

您可以尝试这样的事情

wwwhaaaat