Clojure 带有联合的查询组合如何与通过Om Next中的props传递的父子树一起工作
我有两个组件A和B。我想在页面上的这两个组件之间切换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 这些是真的,还是有解决办法
(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
implementIQueryParams
,并在查询参数中查询当前子组件(A或B)