我正在使用重新构建单页应用。每个"页面"应用程序调用组件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
成为表单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组件。
这是预期的行为吗?如果是这样,有没有更好的方法来实现我的基页/具体页面模型?
答案 0 :(得分:4)
重新构建试剂文档(*)中的规则是,对于Form-2组件,外部函数和内部函数必须具有相同的参数吗?
查看第二个菜鸟错误'在this page
(*)重新取决于试剂。有关Form-1/2/3组件的文档同样适用于单独使用Reagent或使用位于Reagent之上的其他框架/库之一。
答案 1 :(得分:3)
base-page
的这个定义很好:
(defn base-page [& children]
(let [user (subscribe [:current-user])]
(fn [& children]
(into [:div
; banner goes here, including @user
] children))