La maggior parte delle mie azioni redux sono 'recupera alcuni dati dal database, ecco il token di autenticazione', e per la maggior parte sembrano uguali, come questo:
creatore di azioni
export const fetchDashboard = jwt => async dispatch => {
dispatch(fetchDashboardRequest());
try {
const response = await axios.get(
DASHBOARD_ENDPOINT,
{
headers: {
Authorization: 'Bearer ${jwt}',
},
}
);
dispatch({
type:
Action.FETCH_DASHBOARD_SUCCESS,
payload: response.data.dashboard,
});
} catch (error) {
dispatch({
type:
Action.FETCH_DASHBOARD_FAILURE,
payload: flatmapErrors(
error.response.data
),
});
}
};
reducer
export default (
state = initialState,
action
) => {
switch (action.type) {
case Action.FETCH_DASHBOARD_SUCCESS:
return {
...state,
...action.payload
};
case Action.FETCH_DASHBOARD_FAILURE:
return {}
case Action.DASHBOARD_CLEAR_DATA : {
return {};
}
default:
return state;
}
};
Questo è un bel po 'di codice, e alla fine utilizzo gli snippet di VSCode per generarlo.
Finisco per modificare la costante dell'endpoint, per alcuni le intestazioni potrebbero cambiare e potrebbe esserci qualche parsing sulla struttura dei dati, ma per la maggior parte, l'API mi fornisce i dati di cui ho bisogno.
Ma su un numero sempre maggiore di azioni, sono preoccupato che questo non sia ASCIUTTO, e che un refactoring possa essere più tardi un dolore.
È una questione che vale la pena, o dovrei considerare questo solo il boilerplate necessario?