reactjs - 使用 Redux 处理完整异步服务的最佳实践是什么?
问题描述
我想知道使用 Redux 处理带有错误、加载等的异步服务的最佳方法是什么,以及如何实现它?我目前正在使用 Promise 一个 axios 来处理 API 并调用 3 个动作请求,成功和失败:
export function requestExample(page = 1, category = "")
return dispatch => {
dispatch(get_Request()); //set isLoading = true
request.get(`/posts/myPosts`).then(
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);
}
);
我想要一些关于我的结构的评论,并更多地了解另一种以更好的性能和内存来处理异步服务的方法。谢谢!
解决方案
推荐阅读
- ruby-on-rails - 使用布尔按钮的帮助类
- angular - 如何禁用使用 Angular 2 项目开发的应用程序的 F5 或刷新按钮
- c# - 将选定的字符串从下拉列表传递到控制器
- python - Why does Python function return 1.0 (float) when `return 1` is specified?
- bigtable - 带有版本控制的 Google Cloud Bigtable 更新或插入
- xtext - 在 Xtext 格式化程序中禁用换行
- ruby - 在 JRuby 和 MRI 之间共享 Gemfile.lock
- ios - HealthKit requestAuthorization for correlationType(forIdentifier: .bloodPressure)
- python - 从 html 中抓取表格(并且 ID 方法不起作用)
- android - 在侦听器中获取 Kochava 归因错误