【问题标题】:React child component to invoke a function on a sibling componenet反应子组件以调用兄弟组件上的函数
【发布时间】:2017-04-29 17:13:08
【问题描述】:

这个问题很难用语言表达。在 React 中,有没有办法让一个深度(距父级深 2 层)嵌套的子组件调用与其具有兄弟关系的函数? (兄弟姐妹距离父节点深 1 级,但与嵌套较深的子节点缺乏自上而下的关系)

该函数是为了改变兄弟组件的状态,所以它需要作为兄弟组件类的方法调用

我知道我可以将一个函数作为道具传递给一个孩子,并让它在父母的类上被调用,但是这会发生在兄弟姐妹身上吗?

如果这有意义,请告诉我,如果没有,我可以拼凑一个简单的例子来说明我的意思,我要粘贴的代码太多了。

【问题讨论】:

  • 很难理解你的具体情况,但通常 React 提倡单向数据流。数据只以一种方式流动,从父母到孩子。有什么方法可以将相关状态从同级移到父级,然后将函数从父级传递到另一个子级?
  • 是的,这是我试图避免做的事情,因为它会变得混乱,但这是我能够想出的唯一解决方案......我不认为有一种方法可以完成我在这里尝试的其他方法:(
  • 是的,协同定位状态是存在替代状态管理库的重要原因之一。在组件层次结构的多个级别中传递所有不同的状态位和状态更新函数可能会有点麻烦。您很容易遇到一个地方,您必须通过甚至不关心它们的组件传递道具,以便他们的孩子可以访问。到那时,值得研究一下 Redux 或潜在的 MobX,imo

标签: javascript reactjs components


【解决方案1】:

正如您所说,您可以通过将函数作为道具传递来从子级调用父级中的函数。然后,您可以在父级中更改导致重新渲染父级的某些状态,将新状态/道具向下传递给您要更新的兄弟级。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-11
    • 2020-09-02
    • 2018-08-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多