Redux - reducer已成功更新,但连接组件的componentWillReceiveProps仍显示旧状态

时间:2017-02-15 05:06:17

标签: javascript reactjs redux

当我获取用户当前位置以查找该位置内的标记时,我正在启动操作。我得到数据,更新我的减速机。

然而,当我console.log(this.props)中的componentWillReceiveProps时,我仍然看到旧状态。如果我导航到另一条路线,然后回来,我可以从componentWillReceiveProps的控制台日志中看到更新的道具。

更新:这是因为我对组件生命周期缺乏了解。看看下面的答案:)。

1 个答案:

答案 0 :(得分:2)

这是预期的行为!在组件重新渲染之前调用该函数,以便您可以将旧状态与“当前”状态进行比较。

reducer更新状态树,告诉连接的组件重新渲染,然后this.props应该显示组件的旧状态。

在console.log之后,组件将继续重新呈现,除非另有指示,这就是为什么当你向后导航时你会看到“新道具”。

通过componentWillReceiveProps传递的值是下一个道具。

您的生命周期代码基本上是这样说:

  1. 告诉我我的旧道具(连接器让我重新渲染之前)
  2. 如果没有加载的脚本,现在,在reducer之后,有: 一个。如果脚本加载成功,请重置映射选项并重新初始化 湾如果脚本加载失败,请将错误记录到stdout
  3. 生命周期中的文档非常优秀,可以找到here

    如果这没有帮助,那么组件失效的预期行为在哪里?