如何使用Unions查询组合与通过Om Next中的道具传递的父子树一起使用

egu*_*eys 5 clojure relay datomic reactjs om

我有两个组件A和B.我想在页面上的这两个组件之间切换.

(defui A)
(defui B)
Run Code Online (Sandbox Code Playgroud)

一种解决方案是使用父组件C:

(defui C
  (render
   (let [{:keys [activeView]} props]
     (if (= activeView 'A')
         (renderA)
         (renderB)))))
Run Code Online (Sandbox Code Playgroud)

问题是查询.C需要查询A和B,即使其中一个显示.

我需要C要么不参与查询,要么只查询A或B.

这些是真的,还是有解决方法:

  • 子组件只能查询其父级传递的道具.
  • 父组件必须查询其子组件,以便它可以将它们传递给子组件.
  • 只有root组件才会查询app-state.

anm*_*iro 2

  • 子组件只能查询其属性,该属性由其父组件传递。

    • 在你的情况下,是的,这是真的。但是,它也可以通过使用链接来访问顶级状态键。请参阅本教程以获取更多信息。
  • 父组件必须查询其子组件,以便将它们传递给子组件。

    • 更好的说法是,父组件聚合其子组件的查询,组成根。根组件需要具有应用程序的完整查询(这就是“查询组成根”的含义)
  • 只有根组件查询应用程序状态。

    • 不完全的。根组件将获取所有道具并负责将它们传递给子组件,但“查询应用程序状态”本身是在解析器的read方法中完成的。

我建议您阅读Om Next Wiki中的所有教程,以便更好地理解如何正确做事。

关于您的具体问题,您始终可以实现CIQueryParams在查询参数中包含当前子组件(A 或 B)的查询。