This would only work if there was only one global channel needed.

It wouldn't work if you needed separate channels for different branches of
the tree - say if you had multiple items in a list and each of those items
needed a channel to pass to sub-components.

On 17 October 2014 16:02, Jamie Orchard-Hays <[email protected]> wrote:

> I have a base component that creates a channel and then I pass the channel
> via the :opts key-value to its children. However, another user posted
> recently that the :shared data could be modified as it is passed down the
> hierarchy. It seems to me this would be a DRYer way to pass the channel
> down to descendants as you would not have to explicitly pass the channel in
> :opts at each descendant.
>
> Thoughts?
>
> Cheers,
>
> Jamie
>
> On Oct 16, 2014, at 11:21 PM, Brian Crescimanno <
> [email protected]> wrote:
>
> > Hi everyone,
> >
> > I've been playing with Om the past few days both due to my own interest
> in Om itself as well as my long-standing desire to learn ClojureScript.
> With that in mind, I'm relatively new to both.
> >
> > After following the Om "Basic Tutorial" I set about creating my own demo
> app (a drag-and-drop rank-voting UI).  One of the concepts I saw introduced
> in the tutorial was using Core.async channels to deal with events and I
> initially copied that paradigm into my app.  Within a few minutes, I was
> realizing that I must be going down an anti-pattern path.
> >
> > One of the things I like best about Om so far is that it seems to
> encourage me to always be thinking about pieces of functionality as actual
> "components" rather than the traditional MVC paradigm. As I went along, I
> realized I was passing a channel down (via :init-state) through 4+ levels
> of component nesting.  Any time I have to write the same block of code more
> than twice, I question it.
> >
> > After thinking on it a while, I assume it's probably better to pass the
> right cursor and modify the cursor directly from the interior components.
> In my case, my hierarchy looked like:
> >
> > items-view
> > item-view
> > item-detail
> > vote-button
> >
> > ...with the bottom 3 all sharing the same cursor.
> >
> > That said, I wanted to ask around to folks using Om what the "idiomatic"
> approach is. I quickly started to think that the Basic Tutorial was likely
> introducing Core.async to help people get familiar with ClojureScript and
> not anticipating the anti-pattern it was establishing. But, since I don't
> know idiomatic approaches yet; I thought I would ask if there was something
> I'm missing in terms of using async channels more effectively.
> >
> > Thanks for the advice!
> >
> > Brian
> >
> > --
> > 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