An alternative (from https://github.com/danielytics/ominate) is for the outer
component to not actually be a component but be a factory (i.e. so it returns a
function which returns the om component) which takes in the nested component as
a symbol.
This has the slight downside that the factory must pass on the :opts (for
example) to the nested component.
On Monday, 17 November 2014 11:49:31 UTC, Colin Yates wrote:
> Hi all,
>
> I keep running into the really common use case (and seeing others running
> into as well) of composing components.
>
> Quite simply, how is one supposed to compose components in om?
>
> In my particular use case I have a Header component which displays a title
> and optionally a component describing a summary of what is being seen (which
> is more than simple text). I want to do something like:
>
> (defn header [data owner]
> (reify
> om/IRender
> (render [_]
> (dom/div .....
> (when optional-component) optional-component)))))
>
> It works if I put the component into either the header state or opts (e.g.
> (header data owner {:opts {:optional-component (om/build ...}}))
>
> but neither feel idiomatic. If I had to chose the lesser of two evils I would
> chose :opts I guess.
>
> I did consider multi-methods, but this didn't feel particularly nice either.
>
> What am I missing as this doesn't seem to be an obscure use-case :)?
--
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.