我遇到一个问题,那就是当子反应组件的父阶段更改时,它需要更新。我有一个Editor父组件,该组件设置其状态,然后在该组件收到更新的日程表(来自graphQL突变组件)后更新状态。
问题在于componentDidUpdate
的触发器确实触发了Modefield的更新,但是在{strong> {1}}中的setState
可以更新状态之前。这意味着孩子不会更新。 (请注意,我知道一种更惯用的方法是一起消除状态,但是这种方法允许字段编辑和创建新字段。)
如何使孩子根据父母的状态变化进行更新?
componentDidUpdate
编辑:我更新了组件以显示更高级别的graphQL包装器。我之所以要在Editor组件中声明状态,是因为在graphQL查询返回为null的情况下,我将this.state.mode设置为空字符串,然后在更改时进行更新。然后,我将在提交时创建一个新的计划项目。
答案 0 :(得分:2)
提升状态!尝试管理父组件中数据的基本状态,并将数据用作组件中的道具:
您也可以尝试getDerivedStateFromProps,但在检查react博客建议之前:
https://reactjs.org/blog/2018/06/07/you-probably-dont-need-derived-state.html