I'm using raw Reagent with cursors and I don't have that problem. Input fields can be edited anywhere without the cursor jumping. React takes care of that I suppose.
One thought is that you maybe accidentally causing the component to re-instantiate on each state update. That's a common thing o do in Reagent by accident. On Thu, Apr 2, 2015 at 8:33 AM, Shaun Mahood <[email protected]> wrote: > I've been working on my first app using re-frame and have run into the > first real hurdle that I need some help with. > > Basically, the re-frame pattern for dealing with text inputs as I > understand it is as follows: > - Create the input as part of a component, and dispatch a handler as the > :on-change method > - In the handler, update a field in the app-db > - Subscribe the component to changes on the input field so that it will > stay in sync with the app-db > > This is essentially the way it is dealt with in the simple-example > provided with re-frame. Unfortunately, when the input field is edited > anywhere but the end of the textbox, the subscription fires and sets the > value causing the cursor position to be reset to the end of the textbox. > See https://github.com/Day8/re-frame/issues/39 for more info. > > I don't see this as being a major issue in reagent itself, but it causes > problems with the mental model of re-frame. One of the real selling points > of re-frame to me is the ability to just subscribe and re-render components > without having to really worry about synchronizing renders, at least for > basic elements. I ran into it specifically when loading fields to edit, > where I would like to just subscribe the input value but will instead have > to pass it in when calling the component initially. This means I'll lose > the easy synchronization between the input value and the app-db, which kind > of sucks. > > I spent a couple hours yesterday trying to figure out how to get the > cursor position to reset itself by adding it into my existing handlers, > subs, and components with no real luck. I was able to get the cursor > position to reset to the right position at the right time occasionally, but > the majority of the time it would fire either too early or too late and end > up in the wrong place. > > Based on the re-frame wiki ( > https://github.com/Day8/re-frame/wiki/Creating-Reagent-Components), it > looks like there might be a way to do this using form-3 components, but > this seems like a lot of extra work to unload onto anyone developing using > re-frame. > > My ideal thought is that developers could follow the way things are done > in the existing simple-example as closely as possible. I think that it > would mean some changes to how re-frame works, either by wrapping any > subscriptions to input fields (and textarea) and resetting the cursor > position after the update is fired, or adding some sort of helper method to > make it easier for developers to implement when needed. > > I hope that was clear, let me know if there's anywhere I've missed > anything obvious or where I need to elaborate on the problem. > > -- > 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.
