Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Clojure 带有联合的查询组合如何与通过Om Next中的props传递的父子树一起工作_Clojure_Reactjs_Datomic_Relay_Om - Fatal编程技术网

Clojure 带有联合的查询组合如何与通过Om Next中的props传递的父子树一起工作

Clojure 带有联合的查询组合如何与通过Om Next中的props传递的父子树一起工作,clojure,reactjs,datomic,relay,om,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 这些是真的,还是有解决办法

我有两个组件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

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

  • 子组件只能查询其父组件传递的道具
  • 父组件必须查询其子组件,以便将其传递给子组件
  • 只有根组件查询
    应用程序状态
      • 子组件只能查询其父组件传递的道具

        • 在你的背景下,是的,这是真的。但是,它也可以通过使用链接访问顶级状态键。有关更多信息,请参见此
      • 父组件必须查询其子组件,以便将其传递给子组件

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

        • 不完全是。根组件将获得所有的道具,并负责将它们传递给子组件,但是“查询应用程序状态”本身是在解析器的
          read
          方法中完成的
      我建议您完成中的所有教程,以便更好地理解如何正确地做事

      关于您的特定问题,您始终可以执行
      C
      implement
      IQueryParams
      ,并在查询参数中查询当前子组件(A或B)