reactjs 通过 refs 在组件之间进行通信

reactjs communicate between components via refs

我有 3 个组成部分。一个父组件和两个子组件(A,B)。第一个子组件 A 有一个触发父组件功能的按钮。父级有一个开关,可以显示或不显示子组件 B。如果子组件 B 应该是可见的,它就会被挂载。 从父级调用的函数子 A 现在在组件 B 中执行一个函数。

我试图通过在子组件 B 上提供一个 ref 属性来实现它。但是由于有充分的理由它没有安装在 init 上 this.refs 是空的。 我如何在不首先安装所有可能的子组件 B(或以后的 C、D、E)的情况下实现这一目标。

子 A 中的 onClick 事件始终触发引用的事件,这一点很重要。

这是一个草稿:

任何人都可以给我提示来解决我的逻辑问题吗?

下面一行:

The function child A called from parent now executes a function in component B.

很奇怪/并且no-go区域有反应:parent不能(不应该)直接调用child组件内的函数。
parent 可以(应该)将 prop 传递给 child,然后 child 可以启动它自己的功能。

如果我没理解错的话,你想执行 child B 中的函数,以便在 a) 单击组件​​ A 并且 b) 安装组件 B 时执行

您可以通过以下方式实现:

  • 在 parent 中添加状态参数,例如this.setState(childAClicked: true),最有可能在 parent 内的回调函数内,由 child A.
  • 调用
  • 将此参数传递给child B,例如<ChildB clickedA = {this.state.childAClicked} />
  • 在 child B 中,添加一个 componentDidMount() 生命周期方法,它检查 this.props.clickedA,如果为真,则在 child B
  • 中执行你的函数
  • 如果您想在更新 child B 后也执行该函数,请在 componentDidUpdate() 生命周期方法中添加相同的检查

如果您只想根据其他参数在组件 B、C、D 之一内执行该函数,您也可以将此参数添加到 parent 的状态,并传递它也适用于其他 B、C 和 D 组件。