更改组件时未反映setInterval中的道具更新

时间:2019-04-02 04:41:45

标签: javascript reactjs redux redux-saga

有一个组件(comp1),在componentDidMount中,我设置了一个定期调用。

componentDidMount(){
    window.setInterval(() => this.func1(), 5000);
}

回调函数也与以下组件相同(初始计数器值设置为100)

func1(){
    console.log('Count', this.props.counter);
    this.props.decrement();
}

其中,我已经调度了一个操作来减少存储在redux存储中的计数器值。 (计数器值照常从状态映射)

这很好,我可以按预期看到结果。

但是,当我更换组件时(基本上是更改路线),问题就来了。定期函数在后台运行,但不会更新该值。

例如:假设我在此组件中停留30秒钟,因此计数器值为94(初始值为100)。但是,当我更改到另一个组件的路线时,尽管周期函数按预期每隔5秒运行一次,但该值仍停留在94。 (但是在redux开发工具中,我可以看到正确的值并且它正在更新)

注意:在这后面有一个业务场景,我试图简化上面的用例。但是我设法通过从func1调用另一个外部函数来获得预期的行为,并在其中获取存储值(我正在使用redux-saga)。

有人可以在这里解释行为吗?我认为这是因为redux存储库的不变性。

编辑 对我来说,这不是基本的亲子道具更新问题。我不知道为什么标记为重复。因为这与更新不同组件中的道具无关。

0 个答案:

没有答案