I am restructuring an Om app to take advantage of Reference Cursors. I am doing 
so because my current app, which processes, manipulates and displays large 
amounts of data several times per second, is not running so efficiently and 
reworking it in the "old" hierarchical manner to only pass very specific 
cursors in an attempt to minimize re-rendering is proving a logical challenge.

I have read the Advanced Tutorial and it all seems quite nice. But i want 
clarification for now on two things (might have more later):

1) Previously, an Om component would be forced to re-render if its local state 
or its cursor into app state updated with new values, right? If either of those 
didn't change, the component would not need to re-render. If I use om/observe 
now, I assume that even if the cursor or the local state do *not* change, the 
component *will* re-render if what it is observing changes, right? In the Om 
documentation, many of the functions explicitly mention when a re-render will 
happen, but the om/observe does not mention this.

2) Suppose I have a large map in my app state. The values in the map change 
often but at different times. Suppose I have a table where each row reflects 
data for a particular key/value in that map. I do not want a row to re-render 
unless its particular key/value changes, but not other key/values in the map. 
The actual key/value are dynamically created and removed many times during the 
app's runtime, thus I cannot explicitly define a reference cursor for each one. 
What is my best strategy? Without reference cursors, I could first pass the map 
itself as a cursor to a parent component for the whole table. Then I could 
om/build-all over the key/values for each row in the table. But this causes the 
parent component itself to re-render when data for the rows updates, even 
though the parent component does not care about that data -- only the row 
components care. And if the parent re-renders, I'd think maybe all the children 
of that parent are also re-rendering, such that all rows in the table might 
re-render even if only one of them needs to be re-rendered? These are the 
challenges I'm trying to work around.

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