Маршрутизация с использованием шаблона по умолчанию в реагенте

Я пытаюсь использовать реагент для создания своего базового проекта, но у меня проблема с маршрутизацией и ее параметрами. Это из реагента выглядит

Отредактировано -: требуется добавить

(ns hammerslider.core
     (:require [reagent.core :as reagent :refer [atom]]
               [secretary.core :as secretary :include-macros true]
               [accountant.core :as accountant]))     

;; Views

 (defn home-page []
   [:div [:h2 "Welcome to hammerslider"]
    [:div [:a {:href "/c/12"} "go custom"]]])

 (defn c [test]
   [:div [:h2 (str "on C " test)]
    [:div [:a {:href "/"} "go to the home page"]]])

Я пытаюсь получить 12 от c маршрут, который является обработкой маршрута выглядит следующим образом

 (def page (atom #'home-page))

 (defn current-page []
   [:div [@page]])

 (secretary/defroute "/" []
   (reset! page #'home-page))

 (secretary/defroute "/c/:test" [test]
   (reset! page #'c)

Я пытаюсь поймать test параметр с функцией просмотра, но он появляется on C не on C 12, Как мне перевести test параметр в представлении c? или я должен сохранить его на другом atoms?

Отредактировано - моя проблема решена путем сохранения параметров в атом, и это работает, но это правильный способ передачи параметра?

(def parameter (atom ()))

(defn c []
  [:div [:h2 (str "on C " (:test @parameter))]
   [:div [:a {:href "/"} "go to the home page"]]])

(secretary/defroute "/c/:test" {:as params}
  (do (js/console.log params)
      (reset! parameter params)
      (reset! page #'c)
      ))

1 ответ

Это зависит от того, как вы используете параметры вашего маршрута. Единственная гарантия между вашей программой и реагентом состоит в том, что если значение в ratom изменилось, компонент реагента будет изменен соответственно.

TodoMVC - это функциональный пример, который вы можете использовать reagent а также secretary,

https://github.com/tastejs/todomvc/blob/gh-pages/examples/reagent/src/cljs/todomvc/routes.cljs

Кстати, большую часть времени я буду использовать рекадр вместо непосредственного использования реагента.

Другие вопросы по тегам