I see - thanks Andy. It is all magic until it clicks :)

Sent from my iPhone

> On 3 Apr 2015, at 22:45, AndyR <[email protected]> wrote:
> 
> Yes that's expected. The reaction captures deref's (look at the source of 
> ratom.cljs and search for "capture"). So as long as you deref in your 
> reaction block you'll be fine. I'm not an expert on the reagent inner 
> workings so I hope other correct me if I'm wrong :)
> 
>> On Friday, April 3, 2015 at 5:26:25 PM UTC-4, Colin Yates wrote:
>> Here is an example that works and uses a let. I wonder if the reaction 
>> inside the let is making it work...
>> 
>> (defn- render-one [state-key render-key db]
>>  (let [id (-> [:add-patient/tree-state state-key]
>>               subscribe
>>               deref
>>               :selected-ids
>>               first
>>               reaction)]
>>    (reaction @(subscribe [render-key @id]))))
>> 
>>> On Friday, 3 April 2015 20:53:57 UTC+1, Colin Yates  wrote:
>>> My insanity must be worse than I thought because I could swear it was
>>> working earlier!
>>> 
>>>> On 3 April 2015 at 20:45, AndyR <[email protected]> wrote:
>>>> reaction is a macro that expands to evaluating the passed forms (here: 
>>>> 'v') within a function (make-reaction).
>>>> I don't know the internals of Reagent but my guess is that Reagent has to 
>>>> figure out which ratoms were used in that function call. This is done 
>>>> somehow (by maybe some context setting etc) but it's not too important to 
>>>> know.
>>>> 
>>>> What matters is: In your case the v is evaluated before (by the "let") so 
>>>> nothing is noticed by (reaction).
>>>> 
>>>>> On Friday, April 3, 2015 at 3:21:02 PM UTC-4, Colin Yates wrote:
>>>>> I know I am going insane:
>>>>> 
>>>>> (register-sub
>>>>>  :add-patient/selected-journey-details-field
>>>>>  (fn [db]
>>>>>    (reaction (-> [:add-patient/local]
>>>>>                  subscribe
>>>>>                  deref :selected-journey-details-field))
>>>>> 
>>>>>    #_(let [v (-> [:add-patient/local]
>>>>>                subscribe
>>>>>                deref :selected-journey-details-field)]
>>>>>      (reaction v))))
>>>>> 
>>>>> works but
>>>>> 
>>>>> (register-sub
>>>>>  :add-patient/selected-journey-details-field
>>>>>  (fn [db]
>>>>>    #_(reaction (-> [:add-patient/local]
>>>>>                  subscribe
>>>>>                  deref :selected-journey-details-field))
>>>>> 
>>>>>    (let [v (-> [:add-patient/local]
>>>>>                subscribe
>>>>>                deref :selected-journey-details-field)]
>>>>>      (reaction v))))
>>>>> 
>>>>> doesn't. And by 'not working' I mean the component doesn't notice any 
>>>>> changes to a subscription to :add-patient/selected-journey-details-field.
>>>>> 
>>>>> After 4 hours banging my head I reduced it to the above, literally 
>>>>> commenting one and uncommenting the other (with a browser refresh 
>>>>> in-between).
>>>>> 
>>>>> Any suggestions?
>>>> 
>>>> --
>>>> Note that posts from new members are moderated - please be patient with 
>>>> your first post.
>>>> ---
>>>> You received this message because you are subscribed to the Google Groups 
>>>> "ClojureScript" group.
>>>> To unsubscribe from this group and stop receiving emails from it, send an 
>>>> email to [email protected].
>>>> To post to this group, send email to [email protected].
>>>> Visit this group at http://groups.google.com/group/clojurescript.
> 
> -- 
> Note that posts from new members are moderated - please be patient with your 
> first post.
> --- 
> You received this message because you are subscribed to the Google Groups 
> "ClojureScript" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to [email protected].
> To post to this group, send email to [email protected].
> Visit this group at http://groups.google.com/group/clojurescript.

-- 
Note that posts from new members are moderated - please be patient with your 
first post.
--- 
You received this message because you are subscribed to the Google Groups 
"ClojureScript" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/clojurescript.

Reply via email to