Created
June 26, 2022 12:55
-
-
Save geraldodev/1422fa785f6e0f1afa29c4c083815c76 to your computer and use it in GitHub Desktop.
root cljs app defining DataBrowserRouter from react-router
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
(ns crudis.client | |
(:require | |
["react-dom" :as rdom] | |
["react-dom/client" :refer [createRoot]] | |
["react-router-dom" :refer [DataBrowserRouter Route]] | |
[crudis.util.helix :refer [defnc]] | |
[crudis.ui.root :as root] | |
[crudis.ui.routes.countries :as countries] | |
[helix.core :refer [$]] | |
[helix.dom :as d] | |
)) | |
(helix.core/defcomponent error-boundary | |
(constructor | |
[this that] | |
(set! (.-state this) #js {:error nil})) | |
^:static | |
(getDerivedStateFromError | |
[this error] | |
#js {:error error} | |
) | |
(render | |
[this props state] | |
(if-let [error (.-error ^js state)] | |
(if (:on-error-component props) | |
($ (:on-error-component props)) | |
(d/div (pr-str error))) | |
(:children props)))) | |
(defnc App | |
[] | |
($ error-boundary | |
($ DataBrowserRouter | |
($ Route {:path "/" :element ($ root/Root)} | |
($ Route {:path "countries" | |
:element ($ countries/CountriesView) | |
:loader countries/loader}) | |
($ Route {:path "departments" :element ($ root/DepartmentsView)}) | |
($ Route {:path "dependents" :element ($ root/DependentsView)}) | |
($ Route {:path "employees" :element ($ root/EmployeesView)}) | |
($ Route {:path "jobs" :element ($ root/JobsView)}) | |
($ Route {:path "locations" :element ($ root/LocationsView)}) | |
($ Route {:path "regions" :element ($ root/RegionsView)}))))) | |
;; aka main | |
(defn ^:export entry-point [] | |
(.render (createRoot (js/document.getElementById "root")) | |
($ App))) | |
(comment | |
) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment