Ser*_*ris 4 clojurescript reactjs reagent shadow-cljs
当我们保存文件和shadow-cljs重新加载时如何重新渲染整个试剂树?
n2o*_*n2o 11
使用 React v18,您只需创建一次根节点。之后,您可以.render()从中调用该函数来(重新)渲染您的应用程序。
此外,您还需要配置一个函数/行为来告诉 Shadow-cljs 在重新加载期间应该执行哪些操作。
这是一个完整的示例,取自此处https://github.com/schnaq/cljs-reagent-template
(ns playground
(:require ["react-dom/client" :refer [createRoot]]
[goog.dom :as gdom]
[reagent.core :as r]))
(defn- main []
[:main.container.mx-auto
[:h1 "Welcome to your app"]])
;; -----------------------------------------------------------------------------
(defonce root (createRoot (gdom/getElement "app")))
(defn init
[]
(.render root (r/as-element [main])))
(defn ^:dev/after-load re-render
[]
;; The `:dev/after-load` metadata causes this function to be called
;; after shadow-cljs hot-reloads code.
;; This function is called implicitly by its annotation.
(init))
Run Code Online (Sandbox Code Playgroud)
Shadow-cljs 配置为从 Playground/init 调用 init 函数。
;; shadow-cljs.edn
{...
:builds {:frontend {:modules {:main {:init-fn playground/init}}}}}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1675 次 |
| 最近记录: |