Javascript reactjs通过引用在组件之间进行通信
我有3个组件。一个父组件和两个子组件(A、B)。第一个子组件A有一个触发父组件功能的按钮。父组件有一个开关,用于显示或不显示子组件B。如果子部件B应可见,则其将被安装。 从父函数调用的子函数A现在执行组件B中的函数 我试图通过在子组件B上提供ref属性来实现它。但由于initJavascript reactjs通过引用在组件之间进行通信,javascript,reactjs,components,refs,Javascript,Reactjs,Components,Refs,我有3个组件。一个父组件和两个子组件(A、B)。第一个子组件A有一个触发父组件功能的按钮。父组件有一个开关,用于显示或不显示子组件B。如果子部件B应可见,则其将被安装。 从父函数调用的子函数A现在执行组件B中的函数 我试图通过在子组件B上提供ref属性来实现它。但由于init上没有安装ref属性,因此。refs为空。 如何在不首先安装所有可能的子组件B(或更高版本的C、D、E)的情况下实现这一点 子A中的onClick事件始终触发引用的事件,这一点很重要 这里是一个快速草案: 有人能给我一个提示
上没有安装ref属性,因此。refs
为空。
如何在不首先安装所有可能的子组件B(或更高版本的C、D、E)的情况下实现这一点
子A中的onClick事件始终触发引用的事件,这一点很重要
这里是一个快速草案:
有人能给我一个提示来解决我的逻辑问题吗?下面一行:
从父函数调用的子函数A现在执行中的函数
B部分
是奇怪的/并且是react的禁区:父组件不能(不应该)直接调用子组件内的函数。父母可以(应该)将道具传递给孩子,然后孩子可以启动自己的功能 如果我理解正确,您希望在子B中执行函数,以便在a)单击组件a并安装组件B时执行 您可以通过以下方式实现这一点:
- 在父级中添加状态参数,例如,
,很可能在父级中的回调函数中,由子级a调用this.setState(childAClicked:true)
- 将此参数传递给子级B,例如
- 在子B中,添加一个
lifecycle方法,该方法检查componentDidMount()
,如果为true,则在子B中执行函数this.props.clickedA
- 如果您希望在更新子B之后也执行该函数,请在
lifecycle方法中添加相同的检查componentdiddupdate()
如果您想根据其他参数仅在组件B、C、D中的一个组件内执行该函数,您可以将此参数添加到父级状态,并将其传递给其他B、C和D组件。我认为组件将在每个子级(B-D)上接收props;忽略隐藏的一个,在显示的一个上做一些事情。你也可以用一些像EventEmmiter或redux之类的东西“作弊”。哦,天哪,你说得太对了。。。我看不见森林。Thx a lot但如果再次单击按钮,会发生什么情况?B组件中clickedA的值已设置为true,因此它不会更改,因此如何捕获单击的按钮?你必须把它转换成false,但是逻辑就没有意义了,对吧?