从另一个孩子访问孩子的状态?

Posted

技术标签:

【中文标题】从另一个孩子访问孩子的状态?【英文标题】:Accessing child's state from another child? 【发布时间】:2020-08-12 17:15:04 【问题描述】:

我有一个带有两个子组件的父组件。

<Parent>
    <Child1 />
    <Child2 />
</Parent>

Child1 有一个 textarea 并利用 useState 将 textarea 的值设置为 state;编辑器,setEditor。

Child2 有一个按钮,单击时我想在 Child1 中获取编辑器的值。

我最好的做法是什么?

我已经尝试创建一个新的上下文来包装我的 Parent 容器,但我仍在为如何真正获得编辑器值而苦苦挣扎。

我的另一个想法是将 useState 推送到父级并将道具向下传递到 Child1 ——但这意味着每次在 Child1 的文本区域中按下一个键时我的父组件都会重新渲染。

【问题讨论】:

将状态移至父级 【参考方案1】:

lifting state up 解决了这个问题。

在 React 中,共享状态是通过将其向上移动到最近的位置来完成的 需要它的组件的共同祖先。这就是所谓的 “提升状态”。

除非确实需要担心,否则不要担心父组件会重新渲染。

【讨论】:

【参考方案2】:

您必须将状态从 child1 提升到父级,然后您可以将其作为道具传递给您拥有的所有子级。希望你能理解

【讨论】:

以上是关于从另一个孩子访问孩子的状态?的主要内容,如果未能解决你的问题,请参考以下文章

如何在颤动中从父小部件访问所有孩子的状态?

React,如何从父母那里访问孩子的状态?无需更新父母的状态

Flutter 使用 GlobalKey 从另一个类更改状态

Angular2从另一个类访问函数/变量

无法从另一个孩子读取一个孩子写入的共享内存

反应:你怎么能设置一个嵌套的孩子的状态