反应警告:在现有状态转换期间无法更新

时间:2018-03-08 10:15:11

标签: javascript reactjs redux

首先,我想提供一个指向沙箱示例的链接:https://codesandbox.io/s/oq36pl4j49

我正在学习反应+ redux并尝试构建一个简单的测验原型。

我的主要想法是:

  • 将所有问题保存在redux商店中,并在那里更新。
  • quizengine.currentQuestion告诉我要回答哪个问题 渲染,所以我只是调度动作,正在改变quizengine.currentQuestion并渲染其余部分
  • 后退和下一步按钮是导航,它们属于问题。原因有时我需要隐藏它们,例如,如果存在不同类型的问题,例如多个问题,而不是单击以回答触发goToNext,那么我可以隐藏下一个或第一个问题没有“后退”按钮。 / LI>

现在一切正常,但当我按Back或Next时,我在控制台中遇到了问题:

Warning: Cannot update during an existing state transition 
(such as within `render` or another component's constructor).
Render methods should be a pure function of props and state; 
constructor side-effects are an anti-pattern,
but can be moved to `componentWillMount`

我试图改变

<button className="btn prev" onClick={goToPrev}>Back</button>
<button className="btn next" onClick={goToNext}>Next</button>

到那个:

<button className="btn prev" onClick={() => {goToPrev()}}>Back</button>
<button className="btn next" onClick={() => {goToNext()}}>Next</button>

但它仍然没有帮助。

我是朝着正确的方向前进吗?

这个小App是否有意义?

这就是我的商店的样子: enter image description here

1 个答案:

答案 0 :(得分:0)

添加如下函数:

goToPrev = () => {
    this.context.router.goBack();
}

并在render()中使用:

<button className="btn prev" onClick={ this.goToPrev }>Back</button>