Post 请求 redux thunk
Post request redux thunk
我有 GET 请求,通常当这些请求成功时,我会在存储中保存数据,但是对于 POST 请求,我需要知道它是否成功,以便执行一些代码(显示消息并重定向), docu 说你可以使用 isLoading 变量,但它只是说服务是否在工作,但如果成功则不会,如果我尝试在商店中创建一个新的成功变量,它将在请求后永远打开并且我也不需要那个。我尝试从 action creator 返回一个 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;
});
}
}
我明白你的疑虑从何而来,在你的 Redux store 上有一个字段只是为了知道一次性请求是否成功似乎并不合适。
如果您只需要发出 post 请求并且只关心一次结果,最简单的方法是在发出请求的组件中使用状态。组件级状态易于管理,并在卸载组件时从内存中删除,但另一方面,您可能希望应用程序拥有单一的真实来源。你必须做出选择,但你的 Redux 实现是正确的。
我有 GET 请求,通常当这些请求成功时,我会在存储中保存数据,但是对于 POST 请求,我需要知道它是否成功,以便执行一些代码(显示消息并重定向), docu 说你可以使用 isLoading 变量,但它只是说服务是否在工作,但如果成功则不会,如果我尝试在商店中创建一个新的成功变量,它将在请求后永远打开并且我也不需要那个。我尝试从 action creator 返回一个 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;
});
}
}
我明白你的疑虑从何而来,在你的 Redux store 上有一个字段只是为了知道一次性请求是否成功似乎并不合适。
如果您只需要发出 post 请求并且只关心一次结果,最简单的方法是在发出请求的组件中使用状态。组件级状态易于管理,并在卸载组件时从内存中删除,但另一方面,您可能希望应用程序拥有单一的真实来源。你必须做出选择,但你的 Redux 实现是正确的。