clojure - 带联合的查询组合如何与通过 Om Next 中的 props 传递的父子树配合使用

标签 clojure reactjs datomic relay om

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

(defui A)
(defui B)

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

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

问题是查询。 C 需要查询 A 和 B,即使其中之一被显示。

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

这些是否属实,或者是否有解决方法:

  • 子组件只能查询其 props,该 props 由其父组件传递。
  • 父组件必须查询其子组件,以便将它们传递给子组件。
  • 只有根组件才会查询应用状态

最佳答案

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

    • 根据您的情况,是的,确实如此。但是,它也可以通过使用链接来访问顶级状态 key 。看这个tutorial了解更多信息。
  • 父组件必须查询其子组件,以便将它们传递给子组件。

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

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

我建议你完成Om Next Wiki中的所有教程。为了更好地理解如何正确地做事。

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

关于clojure - 带联合的查询组合如何与通过 Om Next 中的 props 传递的父子树配合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33976526/

相关文章:

xml - 使用 data.zip 在 Clojure 中解析 XML 时出现 OutOfMemoryError

clojure - 如何在 Clojure 中部分展平列表?

reactjs - React fontawesome 5 SVG 不重新渲染

reactjs - NativeBase : Generate Columns in Row

javascript - 如何在基于 ReactJS 的 Node 应用程序中从外部 API 获取服务器端数据?

missing-data - 在 Datomic 中查找缺少属性的实体

clojure - 您可以使用 Datomic 快速将所有数据加载到内存中吗?

clojure - 如何按类型合并 clojure 列表中的项目?

克洛尤尔 : Read an edn file line by line

datomic - 减少原子内存使用