【问题标题】:react - Why does Parent Component state change when using updating state on Child?react - 为什么在 Child 上使用更新状态时父组件状态会发生变化?
【发布时间】:2017-04-06 22:30:40
【问题描述】:

当我通过执行以下操作修改子组件的状态时:

// inside child component
var stateToSet = this.state;
stateToSet[active] = false;
this.setState(nextState);

父状态更改而不重新渲染。

我想当stateToSet[active] = false 时引用了父组件this.state,所以我Object.assign'd 了我要修改的状态和每个属性,然后它在不修改父状态的情况下工作。

我现在想知道为什么会这样。这可能是预期的行为吗?早午餐(我的编译器)和连接文件会是问题吗?

有什么想法吗?

【问题讨论】:

  • 您能从您的父组件和子组件中发布一些相关代码吗?您是否触发了从子级到父级的任何回调函数?理想情况下,子组件的状态变化不会影响父组件。

标签: javascript reactjs brunch


【解决方案1】:

是的,所以你永远不应该像在这里那样直接修改状态,因为this.setState 实际上会触发组件的所有生命周期方法,而像这里那样修改状态不会。该功能需要您想要修改的键,因此无需Object.assign...

this.setState({ active: false })

我不确定您所说的 Parent/child 是什么意思,以及为什么设置孩子的父母与父母的父母有任何关系,但是如果您的意思是当孩子的状态发生变化时不重新渲染父母,那么这是预期的行为。

【讨论】:

  • 我简化了问题中的代码,但现在似乎没有帮助。我需要用this.setState({ filters[filterIndex] = updatedFilter}) 之类的东西修改一个特定的数组项(这不起作用,它只是示例)
  • 我没有看到问题有任何变化。您能否发布更多代码?由于缺少大部分零件,因此不清楚您要问什么。
猜你喜欢
  • 1970-01-01
  • 2020-04-06
  • 1970-01-01
  • 2019-06-22
  • 2020-10-09
  • 2016-10-02
  • 2020-03-19
  • 2021-01-03
  • 2021-06-08
相关资源
最近更新 更多