我正在使用 re-frame 构建一个单页应用程序。应用程序的每个“页面”调用一个组件base-page
,然后提供其特定页面的子...
(defn base-page [& children]
(into [:div
; banner goes here
] children))
(register-sub :count
(fn [db _] (reaction (:count @db))))
(register-handler :inc
(fn [db _] (update db :count inc)))
(defn test-page []
(let [count (subscribe [:count])]
(fn []
[base-page
[:h2 "Test Page"]
[:p (str "Count: " @count)]])))
这会使用 的初始值正确呈现页面:count
,并且当我(dispatch [:inc])
正确运行页面更新时。
现在我想base-page
成为一个 form-2 组件,这样它就可以拥有自己的订阅......
(defn base-page [& children]
(let [user (subscribe [:current-user])]
(fn []
(into [:div
; banner goes here, including @user
] children))
但是,当我这样做时,test-page
当我运行时计数不再更新(dispatch [:inc])
。我觉得这很令人惊讶,因为我认为 Reagent 在幕后将 form-1 和 form-2 组件打包成 form-3 组件。
这是预期的行为吗?如果是这样,是否有更好的方法来实现我的基本页面/具体页面模型?