Reitit не распознает маршрут при прямом переходе к нему в браузере

Я пытаюсь определить несколько маршрутов для использования на моем веб-сайте. Я определил их так:

(def routes
  ["/"
   [""
    {:name :home
     :controllers [{:start (fn [& params] (js/console.log "Home"))
                    :stop (fn [& params] (js/console.log "Leaving Home"))}]}]
   ["posts"
    [""
     {:name :posts
      :controllers [{:start (fn [& params] (js/console.log "Posts"))
                     :stop (fn [& params] (js/console.log "Leaving Posts"))}]}]
    (for [post blog/posts]
      [(:route post)
       {:name (:tag post)
        :controllers [{:start (fn [& params] (js/console.log (:name post)))
                       :stop (fn [& params] (js/console.log "Leaving " (:name post)))}]}])]])

(defn on-navigate [new-match]
  (when new-match
    (re-frame/dispatch [::e/navigated new-match])))

(def router
  (rf/router
   routes))

(defn init-routes! []
  (rfe/start!
   router
   on-navigate
   {:use-fragment false}))

Это должно динамически создавать маршруты для сообщений блога, которые я определяю в своем файле блога. Он отлично работает, когда я начинаю с любогоlocalhost:8280/ или localhost:8280/posts и щелкните ссылку публикации, которая ведет к localhost:8280/posts/blank(страница шаблона сообщения в блоге). Если я просматриваю сообщение (/posts/blank) и обновите страницу, она откроется на пустой экран и, похоже, не загружает какой-либо скомпилированный javascript. Если я перезагружусь/ или /posts он работает, как ожидалось, и позволяет мне продолжать просмотр.

У меня есть два вопроса о Reitit, по которым я был бы очень благодарен за помощь:

  1. Почему это происходит и что я могу изменить в настройках маршрута, чтобы это исправить?
  2. В настоящее время я могу перейти только к /posts и нет /posts/, как мне зарегистрировать маршрут с дополнительным /в конце тоже? Если я попытаюсь определить два маршрута с одинаковым именем, Reitit не позволит этого.

0 ответов

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