Thanks Gijs,

This really explains a lot.

On Thu, Sep 18, 2014 at 10:48 PM, Gijs S. <[email protected]> wrote:
> With line 41 uncommented the following seems to happen:
>
> 1. Parent component's state changed
> 2. om/react "walks" the component tree in parent's render to see what should 
> update
> 3. on line 45 with om/build for the child component finds that the child 
> component already exists, so there is no new component created nor mounted.
> 4. However, "running"/calling om/build on line 45 created a new subscription 
> to the event-pub through :subscriber/:create-subscriber in {:init-state ...}
> 5. There will not be a new component created that would create a go-loop to 
> consume from this new subscriber channel (there's no call to om/will-mount 
> for a new component from line 22)
> 6. Now event-pub has two subscribers but only one go-loop that consumes from 
> a channel. The pub on :event-ch will block [1] [2]
> 7. Weirdness on the page
>
> Seems you shouldn't have side-effects in the {:init-state ...} passed to 
> om/build. Instead pass the event-pub to the child component via :init-state 
> and create the sub chan together with the go-loop to consume from it.
>
> -Gijs
>
> [1] http://clojure.github.io/core.async/#clojure.core.async/pub
> "Each item is distributed to all subs in parallel and synchronously,
> i.e. each sub must accept before the next item is distributed. Use
> buffering/windowing to prevent slow subs from holding up the pub."
> [2] Play around with buffering in the chan on line 57 to see this behavior 
> change for a couple of clicks
>
> --
> Note that posts from new members are moderated - please be patient with your 
> first post.
> ---
> You received this message because you are subscribed to a topic in the Google 
> Groups "ClojureScript" group.
> To unsubscribe from this topic, visit 
> https://groups.google.com/d/topic/clojurescript/5rCTfnulNXI/unsubscribe.
> To unsubscribe from this group and all its topics, 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.



-- 
http://www.michielborkent.nl
http://www.eetvoorjeleven.nu

-- 
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