each ﬁeld in the form? ▸ Which ﬁelds are in the form? ▸ Are the ﬁeld values valid? ▸ Which form elements has the user touched? ▸ Which ﬁeld 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
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.
ﬂow ▸ Functional, easy to test the "reducers" that modify your state ▸ If something is displaying wrong, the state is wrong ▸ Easy to ﬁnd 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 ﬂow ▸ Update state with dispatched actions ▸ Subscribed components rerender on changes to their slice ▸ Redux manages the broadcast of state changes
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