从 repl 重新加载重新构建组件

问题描述 投票:0回答:1

我目前正在尝试 ClojureScript,我有点困惑。

我的印象是我能够通过在 REPL 中评估各个组件来重新加载它们。

我已经设置了 nREPL 和 nvim conjure。 (我也尝试过 vscode calva)

我可以评估类似

(js/alert "test")
的内容并在浏览器中收到警报,但是例如当我有类似的内容时:

(defn main-panel []
  (let [name (re-frame/subscribe [::subs/name])]
    [:div
     [:h1
      "Hello from " @name]]))

并更改文本,我必须保存文件(从而重新加载所有更改,而不仅仅是我对该组件所做的更改)才能查看浏览器中反映的更改。

我是否错误地认为你可以在 clojure 脚本中以这种方式使用 REPL?

clojurescript reagent re-frame nrepl
1个回答
1
投票

您可以直接从 REPL 重新定义组件,但这不会自动重新渲染组件。

在典型的“热重载工作流程”中,首先加载已编译的代码,然后触发渲染。在 REPL 上评估组件基本上就是加载代码部分。 要实际渲染组件,您还需要从 REPL 调用渲染函数。

热重载是常见的工作流程,因为 REPL 在这种方式上需要更多的手动操作,但它肯定是可行的。

© www.soinside.com 2019 - 2024. All rights reserved.