我正在尝试拦截子组件中的用户活动,然后更新其中一个兄弟姐妹的状态。 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 会重新呈现。
我这样做了吗?
答案 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被重新渲染。