gpt4 book ai didi

clojurescript - 重构中的嵌套组件未更新

转载 作者:行者123 更新时间:2023-12-04 23:42:08 25 4
gpt4 key购买 nike

我正在使用重新框架构建一个单页应用程序。应用程序的每个“页面”调用一个组件 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 组件。

这是预期的行为吗?如果是这样,是否有更好的方法来实现我的基本页面/具体页面模型?

最佳答案

重新构建 Reagent 文档 (*) 中不是有一条规则,即对于 Form-2 组件,外部函数和内部函数必须具有相同的参数吗?

查看 this page 上的第二个“菜鸟错误”

(*) 重新框架取决于试剂。有关 Form-1/2/3 组件的文档同样适用于单独使用 Reagent 或从位于 Reagent 之上的其他框架/库之一使用。

关于clojurescript - 重构中的嵌套组件未更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34578932/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com