Up-front design for a reducer and a saga
In this section, we’ll do the usual thing of mapping out a rough plan of what we’re going to build.
Let’s start by looking at what the actual technical change is going to be and discuss why we’re going to do it.
We’re going to move the logic for submitting a customer—the doSave
function in CustomerForm
—out of the React component and into Redux. We’ll use a Redux reducer to manage the status of the operation: whether it’s currently submitting, finished, or had a validation error. We’ll use a Redux saga to perform the asynchronous operation.
Why Redux?
Given the current feature set of the application, there’s really no reason to use Redux. However, imagine that in the future, we’d like to support these features:
- After adding a new customer, the
AppointmentForm
component shows the customer information just before submitting it, without having...