我有GET请求,通常,当请求成功时,我会将数据保存在存储区中,但是对于POST请求,我需要知道它是否成功,以便执行一些代码(显示消息并重定向),文档提示您可以使用isLoading变量,但是它只是说服务是否正常运行,但如果成功,则不能,如果我尝试在商店中创建一个新的成功变量,它将在请求后永久打开,而我不需要要么。我尝试从操作创建者那里返回一个Promise,并直接在组件内部处理响应,但是在那儿调用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;
});
}
}
答案 0 :(得分:1)
我知道您的疑问来自何处,在Redux商店中仅希望知道一次请求的成功并不适合。
如果您只需要发出一个发布请求,并且只关心它的结果一次,那么最简单的方法是在发出请求的组件中使用状态。组件级状态很容易管理,并且在卸载组件时可以从内存中删除,但另一方面,您可能希望为应用程序提供单一的事实来源。您必须做出选择,但是您的Redux实现是正确的。