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