Yes, the multiple cursors solution works quite well with the caveat that intermediary components must make sure not to discard parts of the cursor that lower components need.
Another approach that is working well for me as a temporary solution is to store this information in local state and using async channels to notify. For example: component A accesses path X through its app state but also needs path Y. Component B accesses path Y. When component B modifies Y, it also sends the change over an async channel to component A, which stores it in its local state. When David releases the solution, I can replace the local state access with the solution and delete the channel. On 12 April 2014 16:13, Dmitry Suzdalev <[email protected]> wrote: > Understood. > Well, after reading through this thread, I see that > > a) David is working on a solution to this problem, which will deliver both > convenience and auto updates > b) for now there's an option to pass multiple cursors to the component > (there's an example in Om's wiki, on 'Cursors' page) > 12 апр. 2014 г. 18:28 пользователь "Daniel Kersten" <[email protected]> > написал: > > Ah, yes, I meant shared state. The reason I was saying shared and not >> app is that app state usually gets "narrowed" the lower in the component >> tree you get, so when your low down in the tree and then need to access >> something on a completely different branch, how do you do this without >> accessing the root app state (which I was storing in :shared so that >> components can access it without global knowledge)? >> >> But perhaps I'm still thinking about it wrong. Would love to hear your >> thoughts. >> >> >> On 12 April 2014 14:54, Dmitry Suzdalev <[email protected]> wrote: >> >>> Ok :) If you are talking about :shared state, than it's true, but for >>> the generic case of the global app state, auto updates are supposed to work >>> regardless of which part of the state cursor points to AFAIK. >>> 12 апр. 2014 г. 17:37 пользователь "Daniel Kersten" <[email protected]> >>> написал: >>> >>> I think perhaps I was misunderstanding how cursors work. Let me try it >>>> out and get back to you then :) >>>> >>>> >>>> On 12 April 2014 12:25, Dmitry Suzdalev <[email protected]> wrote: >>>> >>>>> Hi Daniel! >>>>> >>>>> Can you clarify this moment a bit for me: >>>>> >>>>> On Wednesday, April 9, 2014 2:33:31 PM UTC+4, Daniel Kersten wrote: >>>>> > I can pass the entire app state to each component (perhaps trough >>>>> shared state) and use transformation functions (similar to what Sean Grove >>>>> did in his recent slides) to transform the state into a local view for >>>>> each >>>>> component. This means each component gets to select exactly what it needs >>>>> to access without worrying about what comes before or after it in the >>>>> hierarchy, but then you lose the benefit of cursors and automatic >>>>> re-rendering when something changes. >>>>> >>>>> Why do you say that in this case "automatic re-rendering when >>>>> something changes" is being lost? Not clear to me, it seems working ok for >>>>> some of my components which get passed a 'whole' app state... I'm >>>>> interested to know if I maybe miss something here :) >>>>> >>>>> Dmitry. >>>>> >>>>> -- >>>>> 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. >>> >> >> -- >> 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.
