我对om.next (和结束语)很陌生,我有以下问题。我只能使用协调器(即调用其查询方法)调用根组件;其他每个组件似乎都需要使用道具和om/factory调用。我想我漏掉了什么。
我试图创建一个待办事项列表应用程序(100点的创意!),与过滤器显示已完成/不完整/所有项目。如果我的TodoList组件是根组件,我可以使用query:[:todos]来调用它,没有问题。我希望有一个不同的根组件,也有一个通过调节器的Filter组件。
我可以看到以下可能的选择:
这个是可能的吗?谢谢!
发布于 2016-04-04 14:18:25
one (以及其他类似于重构)背后的概念是,有一个真理的来源--你的应用程序状态。接下来,使用Om,应用程序的UI由一个(上下颠倒)组件树组成。在呈现过程中,通过Om将应用程序状态加载到Root组件中,然后解释其静态查询。此应用程序状态作为“道具”接收。你的工作就是把这些道具拆开,然后把“副道具”放在树的其他地方。您可以在每个组件的render方法中这样做。
所以你的第二个选择是走的路。read与静态组件查询中的关键字相关。如果您确保您的状态是默认db格式,那么实际上每个read都可以使用db->tree以相同的方式实现。拥有全局组件并使每个read成为多重方法是不相关的概念,因此并不是不兼容的。事实上,两者兼而有之是非常惯用的。
需要注意的一点是,您的Root组件查询将使用联接来包含其他组件,因此在我看来,查询[:todos]看起来不太正确。像[{:todos (om/get-query TodoList)}]这样的东西会更好:-)
发布于 2016-04-04 14:56:50
如果您还没有,请看一下组件、标识和规范化·omcljs/om Wiki·GitHub。本教程展示了如何在单个根下组织多组分应用程序--它还应该明确每个组件如何使用read、mutate、Ident、IQuery等来协调通过调节器与唯一和唯一应用程序状态的交互。应用程序状态基本上是应用程序的数据库--在单个地图中使用嵌套的数据结构。
see应用程序通常只有一个根组件--如果有多个根,它们通常是按路由组织的,即每个路由有一个根(也请参阅顶层反应元件.介质)。
https://stackoverflow.com/questions/36403174
复制相似问题