Почему на моих маршрутах Reitit требуется символ фунта? - PullRequest
1 голос
/ 07 мая 2020

Я делал личный сайт, используя ClojureScript, и решил go с Reitit в качестве моей библиотеки маршрутизации вместо моего обычного секретаря. Я прочитал действительно хорошие вещи о Reitit, и он вроде как работает, но он будет реагировать только тогда, когда я перейду к пути с символом # в нем.

Пример: я хочу иметь возможность go на «website.com/posts», но он распознает только когда я go на «website.com/#/posts"

My routes.cl js в значительной степени является копией их примера с перекомпоновкой:

(defn href
  ([k]
   (href k nil nil))
  ([k params]
   (href k params nil))
  ([k params query]
   (rfe/href k params query)))


(def routes
  ["/"
   [""
    {:name :home
     :view v/main-panel
     :controllers [{:start (fn [& params] (js/console.log "Home"))
                    :stop (fn [& params] (js/console.log "Leaving Home"))}]}]
   ["posts"
    {:name :posts
     :view v/post-panel
     :controllers [{:start (fn [& params] (js/console.log "Posts"))
                    :stop (fn [& params] (js/console.log "Leaving Posts"))}]}]])

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

(def router
  (rf/router
   routes
   {:data {:coercion rss/coercion}}))

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

и мой events.cl js также следует их примеру:

(re-frame/reg-event-fx
 ::navigate
 (fn [db [_ & route]]
   {::navigate! route}))

(re-frame/reg-event-fx
 ::navigate!
 (fn [route]
   (apply rfe/push-state route)))

(re-frame/reg-event-db
 ::navigated
 (fn [db [_ new-match]]
   (let [old-match (:page db)
         controllers (rfc/apply-controllers (:controllers old-match) new-match)]
     (assoc db :page (assoc new-match :controllers controllers)))))

В моем views.cl js у меня есть лог c, чтобы изменить отображаемую страницу на основе словарной записи: page

(defn page []
  (let [current @(rf/subscribe [::subs/page])]
    [:div {:style {:justify-content :center}}
     [navbar]
     (case (:name (:data current))
       :home [main-panel]
       :posts [posts-panel]
       [:div])]))

Маршрутизация работает, поэтому я могу pu sh вперед с моим веб-сайтом, но я бы хотел, чтобы конечный продукт не содержал "#" в URL-адресе при навигации по нему.

Что мне не хватает? Веб-разработчик для меня еще новичок, так что все предложения приветствуются.

1 Ответ

1 голос
/ 07 мая 2020

Попробуйте передать {:use-fragment false} в rfe/start!

...