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 组件。
我有 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 组件。