Yes, for sure.

On Fri, Mar 27, 2015 at 12:56 PM, Daniel Kersten <[email protected]> wrote:

> I'm not in SF either (or even the same continent) so would very much
> appreciate slides/videos/blog posts.
>
> On Fri, 27 Mar 2015 at 19:20 Khalid Jebbari <[email protected]>
> wrote:
>
>> Staying tuned !
>>
>> I'm not in SF, will there be slides or videos ?
>>
>> Le 27 mars 2015 à 20:16, Marc Fawzi <[email protected]> a écrit :
>>
>>
>> You can have your cake and eat it.
>>
>> Will present the complete approach on the next Reagent meetup in SF, and
>> while we are talking about having a presentation about re-frame port of
>> ANgular's phonecat example, the reusable "smart" components presentation
>> will be based on RAW Reagent, nothing added.
>>
>> Stay tuned.
>>
>>
>> On Fri, Mar 27, 2015 at 10:58 AM, Khalid Jebbari <
>> [email protected]> wrote:
>>
>>> If this approach suits you better, fine. Remember, this approach is
>>> coming from the React.js world, where everything is mutable and where
>>> there's no committment to a particular way of passing data/events. For my
>>> current projects, we indeed encapsulated both markup and behaviour, but it
>>> was hard sometimes to make it reusable without changing/hacking it. We
>>> didn't use a global method for sharing state like Flux, so it may explain
>>> why.
>>>
>>>
>>>
>>> Khalid aka DjebbZ
>>> @Dj3bbZ
>>>
>>> On Fri, Mar 27, 2015 at 6:45 PM, Daniel Kersten <[email protected]>
>>> wrote:
>>>
>>>> Marc, can you tell us a little more about the approach your taking?
>>>>
>>>> On Fri, 27 Mar 2015 at 17:43 Marc Fawzi <[email protected]> wrote:
>>>>
>>>>> Yeah but then what are you really reusing? I have components that have
>>>>> sophisticated behavior... sharing just the markup and styles is of limited
>>>>> value since what I want to share in effect is the smart components, which
>>>>> is why I had settled on components encapsulating behavior as a pattern...
>>>>> works better for me to share the whole component (with its behavior) 
>>>>> rather
>>>>> than just the dumb part....
>>>>>
>>>>> On Fri, Mar 27, 2015 at 10:25 AM, Khalid Jebbari <
>>>>> [email protected]> wrote:
>>>>>
>>>>>> Yes, dumb components don't encapsulate beahvior. Indeed if you
>>>>>> generic behaviour you need as someone proposed to push a generic event, 
>>>>>> and
>>>>>> the app handles it specifically.
>>>>>>
>>>>>> Khalid aka DjebbZ
>>>>>> @Dj3bbZ
>>>>>>
>>>>>> On Fri, Mar 27, 2015 at 4:45 PM, Jamie Orchard-Hays <
>>>>>> [email protected]> wrote:
>>>>>>
>>>>>>> Good articles. Thanks, Mike. In my apps I think of them as "generic"
>>>>>>> and "specific", or something like that. IOW, I want some generic views 
>>>>>>> that
>>>>>>> are dumb and know nothing about the app and can be used where ever I 
>>>>>>> need
>>>>>>> them. They get composed into specific views.
>>>>>>>
>>>>>>> Jamie
>>>>>>>
>>>>>>>
>>>>>>> On Mar 27, 2015, at 10:12 AM, Mike Thompson <
>>>>>>> [email protected]> wrote:
>>>>>>>
>>>>>>> > On Saturday, March 28, 2015 at 12:58:17 AM UTC+11, Khalid Jebbari
>>>>>>> wrote:
>>>>>>> >> On Friday, March 27, 2015 at 2:39:37 PM UTC+1, Jamie Orchard-Hays
>>>>>>> wrote:
>>>>>>> >>> Does it make sense to pass the reusable component's context as
>>>>>>> an argument to it? ie,
>>>>>>> >>>
>>>>>>> >>> (defn ReusableComponent [some-context] .... )
>>>>>>> >>>
>>>>>>> >>> Jamie
>>>>>>> >>>
>>>>>>> >>> On Mar 27, 2015, at 8:54 AM, Colin Yates <[email protected]>
>>>>>>> wrote:
>>>>>>> >>>
>>>>>>> >>>> In re-frame event dispatching is handled by (dispatch
>>>>>>> [:discriminator detail]). A corresponding (register-handler 
>>>>>>> :discriminator
>>>>>>> (fn [db [_ detail]]) then reacts to that dispatched event.
>>>>>>> >>>>
>>>>>>> >>>> My question is how are people managing this with re-usable
>>>>>>> components? For example, I have a tree and when selecting a node in that
>>>>>>> tree something should happen. But this is where it gets all polymorphic 
>>>>>>> as
>>>>>>> _what_ happens depends on the client who instantiated the tree. I can 
>>>>>>> see
>>>>>>> the following ways forward:
>>>>>>> >>>>
>>>>>>> >>>> - tree is configured with a 'context' key which is combined
>>>>>>> with the discriminator so rather than the tree emitting :node-selected 
>>>>>>> it
>>>>>>> emits :consumer-a-node-selected. Consumer a can then handle
>>>>>>> consumer-a-node-selected and consumer b can handle (go on, guess)
>>>>>>> consumer-b-node-selected
>>>>>>> >>>> - a variation on the above involving writing your own
>>>>>>> dispatching logic...
>>>>>>> >>>> - tree doesn't use dispatch as the event bus, rather it takes
>>>>>>> in an instance of a Protocol:
>>>>>>> >>>> IRespondToTree
>>>>>>> >>>> (on-node-select [this node])
>>>>>>> >>>> - tree is parameterised with a map of fns {:node-selected-fn
>>>>>>> ...} etc.
>>>>>>> >>>>
>>>>>>> >>>> How would you all handle it? (I am leaning towards the first
>>>>>>> one).
>>>>>>> >>>>
>>>>>>> >>>> --
>>>>>>> >>>> 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.
>>>>>>> >>
>>>>>>> >> Not sure I'm going to answer the question directly, since I've
>>>>>>> never used re-frame, Reagent or Om. I'm just an experienced React.js
>>>>>>> developer VERY interested with Clojure(Script).
>>>>>>> >>
>>>>>>> >> If you want reusable components, whatever wrapper you use around
>>>>>>> React, here's the plan.
>>>>>>> >>
>>>>>>> >> You should create 2 types of components : dumb and smart. Dumb
>>>>>>> components do 2 simple things : display stuff and handle input/events. 
>>>>>>> The
>>>>>>> way they handle should be agnostic to any kind of library and should use
>>>>>>> only language-level feature. Functions. So the dumb component use 
>>>>>>> function
>>>>>>> it's been passed and call it with the input/event. The smart components
>>>>>>> wrap dumb components and connect to the outside world with whatever your
>>>>>>> stack uses (channels, events, ratoms, what not).
>>>>>>> >>
>>>>>>> >> This way your dumb components are always reusable, whatever
>>>>>>> stack/project they're incorporated in. They can also be displayed in a
>>>>>>> simple page for your graphics or HTML/CSS team to check their look. The
>>>>>>> smart components handle whatever logic you want to put in them. So from 
>>>>>>> a
>>>>>>> stack/page/project to another, only the smart components change, no the
>>>>>>> dumb ones. This keep UI consistent and separate concerns.
>>>>>>> >>
>>>>>>> >> Hope it's clear and helpful.
>>>>>>> >
>>>>>>> >
>>>>>>> > I'm not sure how much this perspective applies to the
>>>>>>> Clojurescript wrappings, but here are further references:
>>>>>>> > https://medium.com/@learnreact/container-components-c0e67432e005
>>>>>>> >
>>>>>>> https://medium.com/@dan_abramov/smart-and-dumb-components-7ca2f9a7c7d0
>>>>>>> >
>>>>>>> > --
>>>>>>> > 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.
>>>>>>>
>>>>>>> --
>>>>>>> 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/WOGdUY79Xv4/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.
>>>>>>>
>>>>>>
>>>>>>  --
>>>>>> 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 a topic in the
>>>> Google Groups "ClojureScript" group.
>>>> To unsubscribe from this topic, visit
>>>> https://groups.google.com/d/topic/clojurescript/WOGdUY79Xv4/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.
>>>>
>>>
>>>  --
>>> 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 a topic in the
>> Google Groups "ClojureScript" group.
>> To unsubscribe from this topic, visit
>> https://groups.google.com/d/topic/clojurescript/WOGdUY79Xv4/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.
>>
>>  --
>> 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