Как лучше всего использовать Redux для обработки полных асинхронных сервисов?
Я работал с React - Redux около 1 года. Интересно, как лучше всего обрабатывать асинхронную службу с использованием Redux с ошибкой, загрузкой ... и как это реализовать? В настоящее время я использую Promise an axios для обработки API и вызова 3-х действий, успешного и неудачного:
export function requestExample(page = 1, category = "")
return dispatch => {
dispatch(get_Request()); //set isLoading = true
request.get(`/posts/myPosts`).then( //request is an instance of axios
response => {
dispatch(get_Success(response.data)); //set isLoading = false, data = payload.data
}
).catch(error=>{dispatch(get_Failure())}) //set isLoading = false, data = []
}
}
Мой объект формы ответа:
{data: [], isLoading: false}
некоторое время использую:
{data: [], isLoading: false, isLoadDone: false}
Я обрабатываю ошибку, используя перехватчик axios при создании экземпляра axios, складываю все свои ошибки и показываю их как модальные, когда они произошли.
request.interceptors.request.use(
function (config) {
return config;
},
function (error) {
return Promise.reject(error);
}
);
request.interceptors.response.use(
response => {
return response;
},
error => {
if (error.status !== 200)
store.dispatch(openModal("alert", { title: "Lỗi", text: `Error code: ${error.status} <br> Error content: ${error.statusText} `, type: "Fail" }));
return Promise.reject(error);
}
);
Я хочу несколько комментариев о моей структуре и узнать больше о другом способе обработки асинхронной службы с лучшей производительностью и памятью. Спасибо!