On Tuesday, February 16, 2016 at 5:35:17 AM UTC-8, António Monteiro wrote:
> On Tuesday, February 16, 2016 at 8:40:03 AM UTC+1, Feifan Zhou wrote:
> > Hello,
> > I have a a data structure that looks like this:
> > 
> > {:data "foo"
> >  :children {
> >     :data "bar"
> >     :children {
> >       :data "baz"}}}
> > 
> > I'd like to render it into components like this:
> > 
> > <Comp>
> >   foo
> >   <Comp>
> >     bar
> >     <Comp>
> >       baz
> >     </Comp>
> >   </Comp>
> > </Comp>
> > 
> > Conceptually it makes sense to recurse over the data structure to generate 
> > the view, but AFAIK the Om.next component has to be turned into a factory 
> > (via a separate `def`) before it can be used in Comp's `render`. Since 
> > `def`s aren't hoisted, how would I go about referencing the factory in the 
> > `render`?
> 
> There are examples of recursive components in the Om repository. Here's the 
> link: for the particular examples: 
> https://github.com/omcljs/om/blob/master/src/devcards/om/devcards/core.cljs#L242-L408
> 
> I have also written 2 blog posts that cover recursive queries and components 
> with Om Next. I hope you find them useful:
> http://anmonteiro.com/2016/01/exploration-patterns-om-next-part-1/
> http://anmonteiro.com/2016/01/exploration-patterns-om-next-part-2/

Thanks António! The key was actually just the `declare` form — I didn't realize 
it was possible to do forward declarations in Clojure. 

What would be the advantage of destructuring the component into 
Composite/Component/Leaf vs having just one component that maps over its 
children recursively?

-- 
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 https://groups.google.com/group/clojurescript.

Reply via email to