* Routing Routing with reitit is all about data, you store your routes as nested vectors of hash maps. the hash map should take a name and view param at least but you can add in params and validate the data. Reitit works as a backend and frontend routing library so you can share routes between the two. These are a few simple routes, the last takes parameters and does validation checking against the values. #+BEGIN_SRC clojurescript (def routes [["/" {:name ::frontpage :view 'home-page-function}] ["/about" {:name ::about :view 'about-page-function}] ["/item/:id" {:name ::item :view 'item-page-function :parameters {:path {:id int?} :query {:foo keyword?}}}]]) #+END_SRC You need to connect your routes data structure to =ref/start!= this function take's your own function where you can handle what should happen on route change, in this example an atom is updated causing react to render the new page. #+BEGIN_SRC clojurescript (def site-state (reagent/atom nil)) (rfe/start! (rf/router routes {:data {:coercion rss/coercion}}) (fn [m] (swap! site-state assoc :current-route m)) ;; set to false to enable HistoryAPI {:use-fragment true}) #+END_SRC To create a link to a route, you can use the =rfe/href= function which takes a lookup key which you specified in your routes, in this instance the key is name spaced to the current namespace. #+BEGIN_SRC clojurescript [:a {:href (rfe/href ::frontpage)} "example link"] #+END_SRC