從重新框架開始,並有一個(可能非常基本)的困惑點。重新框架:訂閱不按預期工作
我有一個訂閱:
(defn get-vote-by-id
[votes id]
(filterv #(= (:id %) id) votes))
(register-sub
:cvs
(fn cvs-sub [db [_]]
(make-reaction
(fn cvs-sub-reaction []
(let [cv (get-in @db [:current-vote])
votes (get-in @db [:votes])]
;; why is this evaluating to []?
(get-vote-by-id votes cv))))))
通過使用
本表格-2部分:
(defn vote-page []
(let [ready? (subscribe [:current-vote-initialised?])
current-vote-id (subscribe [:current-vote-id-sub])
cv (subscribe [:cvs])]
(fn vote-page-renderer []
[:div
[:h2 "Vote"]
(if @ready?
(do
[:div
[:div (str "cv: " @cv)]
[:div (str "Current Vote id: " @current-vote-id)]])
[:div "Initialising..."])])))
我的應用程序,數據庫擁有有效數據,{:票......是圖的矢量,每張地圖都有一個:id參數,{:current-vote是一個數字。
我知道,得到票,由-ID的工作原理:
(get-vote-by-id [{:id 1 :data "hi"} {:id 2 :data "there"}] 2)
[{:id 2, :data "there"}]
如果我在替代品種具有恆定(得到票按編號票CV):(得到票,由-id票2),那麼它的作品。但是,否則,(得票 - 由ID ...)正在評估一個空向量[]。
任何幫助表示感謝,並提前致謝!
這表明得到票按ID傳遞正確的值(向量票號ID):
你可以打印出'cv'和'votes'在'get-vote-by-id'調用之前嗎? –
當然 - 我在上面添加了一個截圖。這表明,獲得投票的ID是通過一個向量(3個元素,每個地圖)投票和一個數字(在這種情況下爲1)的ID。 – user1974767
令人困惑的是 - 它可以看出 - 是返回一個空矢量。當從repl調用get-vote-by-id時,具有相同的值,它的行爲與預期相同(返回包含我想要的單個地圖元素的矢量)。 – user1974767