在使用库的应用程序看不到的React库中传递道具

时间:2016-03-28 16:22:28

标签: reactjs ionic-framework redux

我正在开发一个开源库,以便将Ionic framework与React一起使用(它通常适用于Angular):https://github.com/pors/reactionic/

开发人员可以使用此React-Ionic库来创建移动应用程序。这些应用程序将有自己的方式在应用程序中保持状态,通过组合传递道具,或使用Flux / Redux等。

React-Ionic库还需要为很多事情保持状态。例如,包装所有内容的“Body”组件需要知道内容是否包含“Tabs”。因此,“Tabs”组件需要能够在更高的组件中更改状态。

我目前使用合成来执行此操作,但这样做的缺点是app开发人员需要传递特定于React-Ionic库的道具。我希望这些道具对于开发者来说是不可见的。

解决这个问题的“ React方式”是什么?我可以想到两件事,请让我知道最佳解决方案是什么:

  • 使用context
  • 仅为库使用Flex / Redux。这可能吗?它会不会干扰应用程序使用的“状态管理”?
  • 否则?

我添加了一张图片,希望能澄清我想要完成的任务:

enter image description here

所以我想将状态信息从IonBody组件传递到IonTabs组件,而“App组件”不必向下传递道具。同样,IonTabs组件应该能够调用IonBody函数。

谢谢!

1 个答案:

答案 0 :(得分:1)

1)如果你想让道具向下传递,那么他们就会摔倒"对于子组件,您可以使用JSX扩展运算符,它将合并到旧道具中:

<Component {...this.props} more="values" />

2)上下文是一个实验性特征,除非在极少数情况下,否则不应使用;它基本上可以让你创造一个落叶&#34;在状态树之外,你创建了道具。这可能会导致非常意外的结果,因为它通常不在React / Flux范例之内。 有几个用例,但它们通常只作为最后一个度假胜地或仅具有非常具体的理由

3)对于单向数据流,您通常希望使用Flux / Redux 之类的东西来进行状态管理。儿童成分不能真正了解他们的父母,反之亦然。他们通过道具进行沟通(并且只是自上而下,真的),所以行动需要回到顶部&#34;状态树从那里传播下来。

作为最后一点,我想知道你是否可以考虑React-native而不是React-ionic。它正在进行IMO,可能是采用React app本机的理想选择。只是一个想法:)