在重新框架应用程序中没有呈现视图

时间:2017-08-18 12:50:25

标签: clojure clojurescript re-frame

这是一个简单的重新框架应用程序,我尝试根据重新构建的github repo中的现有示例项目创建。但它只显示来自html文件的内容。似乎没有发送任何事件。谁能指出我做错了什么?感谢。

(ns simple.core
  (:require [reagent.core :as reagent]
            [re-frame.core :as rf]
            [clojure.string :as str]))

(rf/reg-event-db
  :rand
  (fn [db [_ _]]
    (assoc db :winner ( + 2 (rand-int 3)))))

(rf/reg-sub
  :winner
  (fn [db _]
    (:winner db)))

(def participants ["Alice" "Bob" "Ellie"])

(defn winners-name
  [idx]
  (get participants idx))

(defn show-winner 
  []
  [:h1
   (winners-name
    (@(rf/subscribe [:winner])))])

(defn ui
  []
  [:div
   [:h1 "Lottery"]
   [show-winner]])

(defn ^:export run
  []
  (rf/dispatch-sync [:rand])
  (reagent/render [ui]
                  (js/document.getElementById "app")))

2 个答案:

答案 0 :(得分:2)

:rand处理程序将生成nil,因为您向生成的值添加2,而participants向量只有3个条目。

答案 1 :(得分:1)

问题是由deref事件周围的一对额外括号引起的。因此函数winners-name将其视为列表而不是整数。

(winners-name
  (@(rf/subscribe [:winner]))