我正在开发一个开源库,以便将Ionic framework与React一起使用(它通常适用于Angular):https://github.com/pors/reactionic/
开发人员可以使用此React-Ionic库来创建移动应用程序。这些应用程序将有自己的方式在应用程序中保持状态,通过组合传递道具,或使用Flux / Redux等。
React-Ionic库还需要为很多事情保持状态。例如,包装所有内容的“Body”组件需要知道内容是否包含“Tabs”。因此,“Tabs”组件需要能够在更高的组件中更改状态。
我目前使用合成来执行此操作,但这样做的缺点是app开发人员需要传递特定于React-Ionic库的道具。我希望这些道具对于开发者来说是不可见的。
解决这个问题的“ React方式”是什么?我可以想到两件事,请让我知道最佳解决方案是什么:
我添加了一张图片,希望能澄清我想要完成的任务:
所以我想将状态信息从IonBody组件传递到IonTabs组件,而“App组件”不必向下传递道具。同样,IonTabs组件应该能够调用IonBody函数。
谢谢!
答案 0 :(得分:1)
1)如果你想让道具向下传递,那么他们就会摔倒"对于子组件,您可以使用JSX扩展运算符,它将合并到旧道具中:
<Component {...this.props} more="values" />
2)上下文是一个实验性特征,除非在极少数情况下,否则不应使用;它基本上可以让你创造一个落叶&#34;在状态树之外,你创建了道具。这可能会导致非常意外的结果,因为它通常不在React / Flux范例之内。 有几个用例,但它们通常只作为最后一个度假胜地或仅具有非常具体的理由
3)对于单向数据流,您通常希望使用Flux / Redux 之类的东西来进行状态管理。儿童成分不能真正了解他们的父母,反之亦然。他们通过道具进行沟通(并且只是自上而下,真的),所以行动需要回到顶部&#34;状态树从那里传播下来。
作为最后一点,我想知道你是否可以考虑React-native而不是React-ionic。它正在进行IMO,可能是采用React app本机的理想选择。只是一个想法:)