Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在Reactjs中,组件之间交互的最佳方式是什么?_Javascript_Reactjs - Fatal编程技术网

Javascript 在Reactjs中,组件之间交互的最佳方式是什么?

Javascript 在Reactjs中,组件之间交互的最佳方式是什么?,javascript,reactjs,Javascript,Reactjs,我试图从一个子组件截取用户活动,然后更新它的一个同级组件的状态。 例如 我的解决方案(我觉得很奇怪)是从RootApp将回调传递给Child1。当用户在Child1上单击onClick时,将调用回调。然后,RootApp中的回调更新为Child2定义的道具Child2将重新渲染 我这样做对吗?感谢trekforever的确认。回调是传递状态的方法 这就是我所做的(如问题所述): 从RootApp将回调传递给Child1。当用户单击Child1时,将调用回调。然后,RootApp中的回调更新为Ch

我试图从一个子组件截取用户活动,然后更新它的一个同级组件的状态。 例如

我的解决方案(我觉得很奇怪)是从RootApp将回调传递给Child1。当用户在Child1上单击onClick时,将调用回调。然后,RootApp中的回调更新为Child2定义的道具Child2将重新渲染


我这样做对吗?

感谢trekforever的确认。回调是传递状态的方法

这就是我所做的(如问题所述):


从RootApp将回调传递给Child1。当用户单击Child1时,将调用回调。然后,RootApp中的回调更新为Child2定义的道具。Child2被重新呈现。

回调是一种方法,但是当您需要在根目录和子目录之间引入组件,或者当您需要重构应用程序并重新构建UI时,回调可能会变得非常麻烦。您可以查看哪些组件使用单个不变状态数据结构来解耦。因此,在child的onClick中,您只需更新状态,依赖于该状态部分的所有其他组件将自动重新呈现。有关更多详细信息,请参阅简介和API文档


当然,对于许多有效的情况,您仍然需要回调,但其中许多被省略。

是的,父组件更新子组件的标准方法是将回调传递给子视图。因此,在您的情况下,
Child1
需要告诉
RootApp
Child1
中发生某些交互时更改其状态。将该状态从
RootApp
传递到
Child2
Child2
将在该状态的道具发生很大变化时重新播放。很高兴看到我在正确的轨道上。非常感谢!当然,如果我想在现有组件之间粘贴一个新组件,它会变得非常混乱!!
 -RootApp
 --Child1 (has user interaction e.g. onClick)
 --Child2 (needs data from Child1 to update state)
-RootApp
 --Child1 (has user interaction e.g. onClick)
 --Child2 (needs data from Child1 to update state)