Two-way Data Binding in ReactJS – Part II
Nested State
In Part I, we learned how to bind top-level state properties to form elements in JSX, so that updates to those elements automatically updated state and vice versa. However, the method we used breaks down when the structure of our state object is more complex; for example:
Our method retrieves the value from state[key], and updates the value with setState({ [key]: /* … */ }), which means we can’t bind an element like this:
… because this.state[‘guest1.name’] is undefined.
While it might make sense to “flatten” the structure of your state object in this specific case, you’re going to need support for nested objects at some point, especially if you want to work with REST data.
Fortunately, lodash can “drill down” into nested objects to find specific properties; so adding this capability to our binder method is as simple as calling lodash’ get() and set() methods:
Now we can use dot (.)- delimited property names in our component JSX:
To see the full example, browse this source at https://github.com/abraham-serafino/react-data-binding/tree/Part-II.
In Part III, we’ll round out the features of our new library by adding support for variable-length arrays.
One thought on “Two-way Data Binding in ReactJS – Part II”