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

How does data flow to component render functions in Om Next?

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

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

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

获取它

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

在运行时,每个组件的 render 方法从父级获取它们的道具。该组件的查询将告诉您期望的道具。这些道具是一张简单的地图。

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

你的最后一个问题 'Why do many of the examples have parent components calling something like (om/get-query ChildComponentClass)?'。这是从父级到子级的连接,查询语法中描述:

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

这些连接的基数直到运行时才知道:它可以是 0、1 或许多。如果是一个,那么您可以将其描述为查找关系。如果超过一个,则作为主从关系。如果 none 两者都可以。