【问题标题】:Why does updating my nested Reagent component not update it?为什么更新嵌套的 Reagent 组件不会更新它?
【发布时间】:2022-12-31 07:10:45
【问题描述】:

我在 Reagent + ShadowCLJS 中有一个三层嵌套的组件(在不同的文件中)。编辑和保存此文件时,更改不会立即显示,直到编辑和保存父组件。

例如,NAV 嵌套在 DASHBOARD 中,而 DASHBOARD 本身嵌套在 APP 中。编辑和保存 DASHBOARD 也会导致浏览器中发生变化,但是编辑和保存 NAV 不会,直到 DASHBOARD 本身被修改,NAV 才会在浏览器中显示变化。

示例代码:

(ns app.core
  (:require [app.views.dashboard :as dash]))
(defn app[]
  [dashboard])
(ns app.views.dashboard
  (:require [app.components.nav :as nav]))
(defn dashboard[]
  [:div 
    [:div "Dashboard"]
    [nav/nav]])
(ns app.components.nav)
(defn nav[]
  [:div "Navigation"])

构建配置:

;;shadow-cljs.edn
...
{:app {:target :browser
       :modules {:main {:entries [app.core]}}}
...

我尝试取消嵌套命名空间,以便组件在目录中彼此相邻,但仍然三重嵌套。这也行不通。

【问题讨论】:

    标签: clojurescript reagent shadow-cljs


    【解决方案1】:

    折腾了5个小时,发现如果C嵌套在B嵌套在A中(A(B(C))),不仅B里面要导入C,还要在B里面导入答:所以我的解决方案是在app.core 中也添加:requireapp.components.nav

    我不太确定为什么会这样,所以如果有人想解释一下,那将是受欢迎的!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-03-15
      • 2019-01-22
      • 2012-01-02
      • 1970-01-01
      • 2019-10-05
      • 2020-04-10
      • 2020-11-04
      相关资源
      最近更新 更多