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

时间:2014-10-16 14:44:17

标签: javascript reactjs

我正在尝试拦截子组件中的用户活动,然后更新其中一个兄弟姐妹的状态。 E.g。

 -RootApp
 --Child1 (has user interaction e.g. onClick)
 --Child2 (needs data from Child1 to update state)

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

我这样做了吗?

2 个答案:

答案 0 :(得分:5)

回调是要走的路,但是当你需要在root和child之间引入一个组件,或者当你需要重构你的应用程序并重构UI时,它们可能变得非常麻烦。您可以查看使用单个不可变状态数据结构解耦组件的Morearty.js。因此,在子项onClick中,您只需更新状态,并且将自动重新呈现依赖于该状态部分的所有其他组件。有关详细信息,请参阅简介和API文档。

当然,对于许多有效案例,你仍然需要回调,但其中很多都是无效的。

答案 1 :(得分:1)

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

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

-RootApp
 --Child1 (has user interaction e.g. onClick)
 --Child2 (needs data from Child1 to update state)

从RootApp传递回Child1的回调。当用户on on on Child1时,将调用回调。 RootApp中的回调然后更新为Child2定义的道具。 Child2被重新渲染。