我正在尝试定义一些要在我的网站上使用的路线。我将它们定义如下:
(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 的问题,我将非常感谢您的帮助:
- 为什么会发生这种情况,我可以在路线设置中进行哪些更改来解决此问题?
- 我目前只能导航到
/posts
而不是/posts/
,我如何才能/
在最后注册带有额外内容的路线?如果我尝试定义两个具有相同名称的路由,Reitit 不允许这样做。