2

我正在尝试定义一些要在我的网站上使用的路线。我将它们定义如下:

(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 不允许这样做。
4

0 回答 0