Adrian Miron writes:

> I'm starting to use om in some projects and one of the first components I 
> had to build was a simple notification component. It shows a message at the 
> top of the page. Other components in the page will use it to display 
> messages when errors happen.
>
> My idea was to send the message string to it via a channel and store it in 
> local state. From there it will be rendered by the component.
>
> The component doesn't use any application state so I build it with what I 
> believed to be a nil cursor (om/build notification *nil* {...}). The 
> problem is that when the component gets rendered I get a "No protocol 
> method ICursor.-path defined for type null" error.
>
> I'm not sure if my design of this component is ok (core.async channel to 
> send messages and use of local state) or should I change it and remove the 
> use of channels and put the message in the application state. I kinda like 
> the channel approach :)
>
> Any ideas?
>
>
> Thank you,
> Adrian

My gut feeling tells me to put notifications into the application state:
They get conj'ed into a ::notifications or similar and the
event-view-component (or some other mechanism) removes old ones from the
list after a timeout or similar.

Your approach should be fine too - just give it a try. The simplest
solution to your problem is passing the whole application state to
`build' - the performance penalty on state-changes should be negligible
as long as React doesn't need to modify the DOM.

-- 
Moritz Ulrich

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to