Hi Mike,

On Thu, Jun 18, 2015 at 2:24 PM, Mike Thompson <[email protected]>
wrote:

> On Thursday, June 18, 2015 at 5:21:18 PM UTC+10, Atamert Ölçgen wrote:
> > Hi,
> >
> >
> > Reagent makes it easy to manage the state but I couldn't find a clean and
> > straightforward way to manage a component tree. I have a component with
> local
> > state that may be installed at some point (or not at all) and then may
> become
> > unnecessary later. Say, I have a parent-component and child-component
> both
> > follow this template:
> >
> >
> > (defn component [state-atom & other-config]
> >   (reset! state-atom initial-state)
> >   (let [... other bindings here ...]
> >     (fn []
> >       ... rendering ...)))
> >
> >
> >
> >
> > This way I can write my component like it has isolated local state, or I
> > can add a second arity and create my ratom there to make it really
> local. But
> > state is not my main issue.
> >
> >
> > Question 1: I create my event handlers in the let and then assign them
> by name
> > in rendering function to avoid having them re-created every time
> rendering
> > function is called. Does this make sense? Is it better to just define
> them
> > inline and why?
>
> Either way is fine.  It depends what values you want to "close over" in
> your event handlers.
>

Got it. Thanks.


>
> >
> > Question 2: child-component is created in the let block of
> parent-component. As
> > far as I understand the child-component will be mounted and unmounted
> based on
> > whether parent-component's rendering function calls its rendering
> function. Is
> > this true?
>
> Each component (child and parent in your case) has its own (React)
> lifecycle functions and can be rendered separately.
>
> If the parent is re-rendered, then the hiccup for the child will be
> returned. If that hiccup is the same as last time  (same parameters) then
> the renderer for the child will not be re-run.
>
>
> >
> >
> > Question 3: What is the idiomatic way to dispose of a component itself?
> Should
> > I use an atom and reset! it to nil when I'm done?
>
> You don't have to actively dispose of components. When they are no longer
> a part of the hiccup tree, they disappear. Nothing you need to do.
>

I know reagent manages react components, and I'm happy that I don't need to
do it myself.

In my original message I meant reagent components though; inner functions
returned by the outer functions more specifically. Parent components holds
onto the rendering function of child component and whatever it is closing
over during its lifetime. That's why I was asking whether I should use an
atom to store the child's renderer (inner fn).



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



-- 
Kind Regards,
Atamert Ölçgen

◻◼◻
◻◻◼
◼◼◼

www.muhuk.com

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