【发布时间】:2017-10-17 10:26:03
【问题描述】:
我正在尝试使用试剂来构建我非常基本的项目,但我遇到了路由及其参数的问题。这是来自试剂的样子
已编辑 - :需要添加
(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"]]])
我正在尝试从c 路由获取12,路由处理看起来像这样
(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?
已编辑 - 我的问题是通过将参数保存到 atom 中解决的,它可以工作,但它是传递参数的正确方法吗?
(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)
))
【问题讨论】:
-
请尝试将您的 atom 更改为
reagent.core/atom -
@AlbertLai : 谢谢你的回复 :).. 我目前正在使用
[reagent.core :as reagent :refer [atom]]
标签: clojurescript reagent secretary