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.
