redux - 发布请求 redux thunk
问题描述
我有 GET 请求,通常当这些请求成功时,我将数据保存在存储中,但是对于 POST 请求,我需要知道它是否成功,以便执行一些代码(显示消息和重定向),文档说你可以使用isLoading 变量,但它只是说服务是否正常工作,但如果它成功了,如果我尝试在商店中创建一个新的成功变量,它将在请求后永远打开,我也不需要它。我尝试从动作创建者返回一个承诺并直接在组件内部处理响应,但是在那里调用 axios 而不是使用 redux 看起来是一样的。
我的动作创建者如下所示:
export function createProject(userId, projectName) {
return function (dispatch) {
dispatch({ type: projectsActions.START_CREATE_PROJECT });
return ProjectsService.createProject(userId, projectName).then(() => {
dispatch({ type: projectsActions.SUCCESS_CREATE_PROJECT });
}).catch((error) => {
dispatch({ type: projectsActions.ERROR_CREATE_PROJECT });
throw error;
});
}
}
解决方案
我了解您的疑虑来自哪里,在您的 Redux 商店中设置一个字段只是为了知道一次性请求的成功似乎是不合适的。
如果您只需要发出一个 post 请求并且只关心它的结果一次,那么最简单的方法是在发出请求的组件中使用 state。组件级状态很容易管理,并在卸载组件时从内存中删除,但另一方面,您可能希望为您的应用程序提供单一的事实来源。你必须做出选择,但你的 Redux 实现是正确的。
推荐阅读
- apache-kafka - Kafka Rest Api 不适用于同一组中的两个或多个消费者
- django - 由于TTFB时间长,Django页面加载时间太慢
- visual-studio-code - 如果子目录在 Visual Studio Code 中为空,如何禁用子目录的内联?
- java - 从对象中获取类名
- google-apps-script - 创建一个数组,在 Google 表单的 setchoices 中将答案选项分配为 true 或 false
- javascript - 使用 Jquery 获取实际的表列
- asp.net-core - asp.net core 3 identity generatePasswordResetTokenAsync 导致内部错误
- angular - 使用 webpack 为 TS 映射文件
- java - 实现通用 WS 重试调用
- tableau-api - 基于条件的条件标记