这是一个简单的重新框架应用程序,我尝试根据重新构建的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")))
答案 0 :(得分:2)
:rand
处理程序将生成nil,因为您向生成的值添加2,而participants
向量只有3个条目。
答案 1 :(得分:1)
问题是由deref
事件周围的一对额外括号引起的。因此函数winners-name
将其视为列表而不是整数。
(winners-name
(@(rf/subscribe [:winner]))