【问题标题】:Child component rerenders but parent component does not子组件会重新渲染,但父组件不会
【发布时间】:2016-11-23 08:21:20
【问题描述】:

我有两个组件,每个组件都通过容器连接,并且都具有通过提供的状态映射的道具。

有一个动作会导致子组件重新渲染,而其父组件不会。我不明白这怎么可能。

我确定我的减速器没有改变状态。此操作和重新渲染差异的结果是子组件中的道具未定义(因为它已成功从状态中删除)。但是,如果父级的渲染函数按照我的预期重新运行,则该渲染函数将不会运行。

为什么状态改变时,父组件的渲染函数没有被调用?

【问题讨论】:

  • 请从您的父组件、子组件、reducer 和问题中提到的动作创建者发布相关代码..
  • @free-soul 将其全部粘贴到问题中?我认为链接比在这里混乱更可取。

标签: redux react-redux react-on-rails


【解决方案1】:

这听起来像是与 react-redux v4 中的实现细节有关,其中子组件在父组件之前更新。这在 react-redux v5 中发生了变化,您可以通过安装 npm install react-redux@next 进行测试。

【讨论】:

  • 哇,够简单的。我没有看到任何表明这一点的问题或文件。我只是假设渲染是单向的,就像传递状态和参数一样。非常感谢。
  • 由于一些 React 15 兼容性原因,下一个 react-redux beta 将使此更改成为 5.0 的选择加入行为,因此您必须启用它才能获得“正确”行为.计划是在 React 16 登陆时将此作为默认行为。请留意 react-redux 发行说明。