数据如何在Om Next中流向组件渲染函数?

时间:2016-06-13 01:34:18

标签: clojurescript om.next

组件数据是否必须从其父组件传入?或者组件查询是否允许数据直接流向组件?

我可以看到查询如何声明组件需要哪些数据。父组件是否必须检查其子组件的查询以找出要传递给它的数据?为什么许多示例都有父组件调用类似(om/get-query ChildComponentClass)

的内容

1 个答案:

答案 0 :(得分:1)

是。根组件是特殊的。所有数据都必须传递到根组件中。为实现此目的,您的根组件的查询将是一系列连接。您在应用程序中具有的每个组件的查询(具有唯一标识)必须在根级别表示为连接。如果数据进入您的应用程序,它必须进入根目录。它由Om Next放在那里,它从应用程序的应用程序状态获取它。

在Om Next应用程序中,您的组件组合在一起作为树。它们通过查询相互关联,特别是通过连接。

在运行时,每个组件的render方法都会从父级传递给他们的道具。组件的查询将告诉您期望的道具。这些道具是一个简单的地图。

您的问题的答案依次是:是,否,是。对于第三个,父进程并没有真正检查其子组件的查询,因为已经将该查询本身的数据作为连接,并将数据传递给子进程。

您的上一个问题'为什么许多示例都有父组件调用类似(om/get-query ChildComponentClass)?'的内容。这是从父级到子级的连接,在查询语法中描述:

{:app/child-join (om/get-query app/ChildComponentClass)}

直到运行时才知道这些连接的基数:它可以是0,1或多个。如果它是一个,那么您可以将其描述为查找关系。如果不止一个作为主 - 细节关系。如果没有,它也可能。