组件数据是否必须从其父组件传入?或者组件查询是否允许数据直接流向组件?
我可以看到查询如何声明组件需要哪些数据。父组件是否必须检查其子组件的查询以找出要传递给它的数据?为什么许多示例都有父组件调用类似(om/get-query ChildComponentClass)
?
答案 0 :(得分:1)
是。根组件是特殊的。所有数据都必须传递到根组件中。为实现此目的,您的根组件的查询将是一系列连接。您在应用程序中具有的每个组件的查询(具有唯一标识)必须在根级别表示为连接。如果数据进入您的应用程序,它必须进入根目录。它由Om Next放在那里,它从应用程序的应用程序状态获取它。
在Om Next应用程序中,您的组件组合在一起作为树。它们通过查询相互关联,特别是通过连接。
在运行时,每个组件的render
方法都会从父级传递给他们的道具。组件的查询将告诉您期望的道具。这些道具是一个简单的地图。
您的问题的答案依次是:是,否,是。对于第三个,父进程并没有真正检查其子组件的查询,因为已经将该查询本身的数据作为连接,并将数据传递给子进程。
您的上一个问题'为什么许多示例都有父组件调用类似(om/get-query ChildComponentClass)
?'的内容。这是从父级到子级的连接,在查询语法中描述:
{:app/child-join (om/get-query app/ChildComponentClass)}
直到运行时才知道这些连接的基数:它可以是0,1或多个。如果它是一个,那么您可以将其描述为查找关系。如果不止一个作为主 - 细节关系。如果没有,它也可能。