The creator of Redux Form explains the trend of abstracting form state out of the DOM and into higher data structures that are easier to reason about, debug, and develop.
each field in the form? ▸ Which fields are in the form? ▸ Are the field values valid? ▸ Which form elements has the user touched? ▸ Which field is currently active? ▸ Have the values changed from their original values? ▸ Is some sort of async validation happening right now? ▸ Is the form being submitted?
types of inputs is abstracted away ▸ Events are wrapped in a SyntheticEvent to hide browser idiosyncrasies. ▸ Variations on how different DOM inputs announce changes are all wrapped in onChange. ▸ Controlled Inputs
will always render with the value it is given as a prop. ▸ No matter what you try to type into this input, it will always render with username as the value. ▸ This takes control away from the DOM.
each input will have. ▸ If we want to manipulate the value as someone types, we can do that. e.g. make all characters uppercase. ▸ We have one canonical source of information for the form values that we can trust.
a single store ▸ State is read-only ▸ Update the state by dispatching actions ▸ Actions are plain javascript objects ▸ State is mutated functionally via Reducers ▸ Subscribers are notified of changes only to their specific slice of the state
flow ▸ Functional, easy to test the "reducers" that modify your state ▸ If something is displaying wrong, the state is wrong ▸ Easy to find exactly where the state got corrupted ▸ Excellent dev tools that allow time travel and replaying of actions
every change ▸ Rerender controlled inputs every change ▸ Maintaining state in components is full of boilerplate REDUX ▸ One way data flow ▸ Update state with dispatched actions ▸ Subscribed components rerender on changes to their slice ▸ Redux manages the broadcast of state changes
processing ▸ jQuery and AJAX helped with form processing, but all state was still in the DOM inputs. ▸ Two-way binding with Angular and Ember provided a hybrid solution bridging the DOM and Javascript ▸ React introduced "controlled inputs" that ceded all control of data to Javascript.
state updating boilerplate. ▸ Redux is excellent and managing state via functional reducers and replayable actions. ▸ Redux-Form marries Redux to React "controlled inputs" to manage all your form state in Redux, for fast form development and easy debugging. ▸ How fast is the development?
▸ Over 2,900 stars on Github ▸ Version 6 was a complete rewrite to optimize for speed ▸ Version 6 will be released later this month ▸ Widely used in production apps around the globe ▸ Works with React Native