【发布时间】:2019-04-10 16:27:42
【问题描述】:
我正在使用 react-native 开发一个移动应用程序(这是我第一次使用 react 的方式)并且我在组件之间通信时遇到了问题。
据我了解,react 是指通过道具从父母到孩子的工作。每个组件通过其状态更新自己,并通过绑定在 props 中的处理程序更新父组件。还是感觉不对。
Parent (wrapper) component
|
|--AppBar Component
|
|--ListScrollView Component (displays API data fetched from the Parent)
|
|--FABmenu Component (handles the secondary components and provides callbacks to the Parent)
|
|--more secondary components (activity indicator, search bar, filtering modal etc)
我实现它的方式是将所有业务逻辑放在父组件中,并将父方法作为道具传递给子组件,但是这种设置在我的用例中被证明是混乱的,因为每天都会添加新功能并且我需要在组件之间来回切换以使一切正常。
Redux/Flux 实际上并没有为此提供解决方案,它们只是使用全局状态覆盖此行为,您需要为其编写更多代码(订阅)来更新各个组件。
Refs 不会暴露整个组件,只是元素,所以这也不是一个选项。
我不了解你,但这使我的工作流程非常缓慢,我宁愿为它们(合理地)所属的组件编写方法并静态调用它们。我在这里遗漏了什么还是这是可悲的事实?
编辑:由于我使用 expo,它不附带最新的 react/react-native 版本,因此我无法充分利用最新功能(例如 Context API)。经过一番修补后,我决定使用 MobX,似乎可以解决问题。
【问题讨论】:
-
如果您发现自己在钻孔,Context API 可能会清理这里的东西。
-
@go_diego 该死的我不应该跳过文档的那部分。虽然它解决了我的直接问题,但 Context 更像是一种解决方法,所以我还将重新设计我的结构。我们说话时回到白板。谢谢大家的回复。
标签: reactjs react-native