Remove extra level of indirection when creating dynamic subscription
Instead of creating a RAtom and resetting into it on a seperate side chain of our dependency graph, we can instead return a reaction which is the result of @@sub, achieving the same goals but with less code and complexity.
This commit is contained in:
parent
12b71b85e5
commit
518ff995dc
|
@ -36,10 +36,8 @@
|
||||||
handler-fn (get @key->fn key-v)]
|
handler-fn (get @key->fn key-v)]
|
||||||
(if (nil? handler-fn)
|
(if (nil? handler-fn)
|
||||||
(error "re-frame: no subscription handler registered for: \"" key-v "\". Returning a nil subscription.")
|
(error "re-frame: no subscription handler registered for: \"" key-v "\". Returning a nil subscription.")
|
||||||
(let [result (reagent.ratom/atom nil)
|
(let [dyn-vals (reaction (mapv deref dynv))
|
||||||
dyn-vals (reaction (mapv deref dynv))
|
sub (reaction (handler-fn app-db v @dyn-vals))]
|
||||||
sub (reaction (handler-fn app-db v @dyn-vals))
|
;; handler-fn returns a reaction which is then wrapped in the sub reaction
|
||||||
;; handler-fn returns a reaction which is then wrapped in the sub reaction
|
;; need to double deref it to get to the actual value.
|
||||||
;; need to double deref it to get to the actual value.
|
(reaction @@sub))))))
|
||||||
_ (run! (reset! result @@sub))] ;; run! here to force this to be started, won't ever run otherwise
|
|
||||||
result)))))
|
|
||||||
|
|
Loading…
Reference in New Issue