To update Redux state in response to async actions using immer:
Install Immer:
npm install immer
Import produce from Immer:
import produce from 'immer';
Use in Reducer:
const initialState = {
data: [],
loading: false,
error: null,
};
const reducer = (state = initialState, action) =>
produce(state, draft => {
switch (action.type) {
case 'FETCH_REQUEST':
draft.loading = true;
draft.error = null;
break;
case 'FETCH_SUCCESS':
draft.loading = false;
draft.data = action.payload;
break;
case 'FETCH_FAILURE':
draft.loading = false;
draft.error = action.payload;
break;
}
});