dereference - ClojureScript Re-frame subscription dereferencing dilemma -


what's best of following approaches?

outer subscription, deref

(defn component [msg]     [:p msg]))  (let [msg (rf/subscribe [:msg])]     [component @msg] 

outer subscription, late deref

(defn component [msg]     [:p @msg]))  (let [msg (rf/subscribe [:msg])]     [component msg] 

inner subscription, deref

(defn component []    (let [msg @(rf/subscribe [:msg])]       [:p msg]))) 

inner subscription, late deref

(defn component []    (let [msg (rf/subscribe [:msg])]       [:p @msg]))) 

when keep inner component pure using outer subscription, can end many arguments need passed through nested structure of unrelated parents. can become mess.

when subscribe inside inner component, becomes impure, losing easy testability.

also, wonder if there important difference between , late dereferencing, other have pass reagent/atom when testing latter.

we'll answer, always, "it depends", ...

outer subscription, deref leads pure/testable inners. choice when that's important you. don't use style much.

outer subscription, late deref we've actively moved away style because produced code later found hard-to-understand. btw, if ever pass ratoms/cursors/subscriptions around, put trailing * on argument name make clear reference-y thing, , not value.

inner subscription, deref used, i'd guess. feels natural after while. perhaps use <sub from lin

inner subscription, late deref works too, tend prefer variation directly above. there's nagging worry might forget add @ @ point of use, , can annoying bug find.


Comments

Popular posts from this blog

angular - Ionic slides - dynamically add slides before and after -

minify - Minimizing css files -

Add a dynamic header in angular 2 http provider -