2017-08-18 38 views
0

下面是我嘗試基於重新構架的github庫中的現有示例項目創建的簡單重新構架應用。但它只顯示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"))) 
+1

你使用的是什麼版本的重幀?在最新的.0版本中引入了一個錯誤,並在不久之後得到修復。 – Slae

+0

我正在使用最新的一個。問題是固定的,我有一對引起問題的括號。謝謝。 – halfo

回答

1

該問題是由於圍繞deref事物的一對額外括號引起的。所以函數winners-name將它視爲一個列表而不是一個整數。

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

:rand的處理程序將產生零次數最多,因爲要添加2到生成的值與所述participants矢量僅具有3個條目。

+0

感謝您發現錯誤!它是在重構時引入的。我修正了這一點,但仍然沒有區別。 – halfo