reactjs - 没有 thunk 的 redux-promise-middleware 错误处理
问题描述
我们正在使用 redux-promise-middleware 并且在弄清楚如何处理错误时遇到了一些困难,所有返回为 400 代码的错误都被处理为“FULFILLED”。我知道这可能是正确的行为,但肯定有一种方法可以在此设置中捕获承诺中的错误。由于我们没有使用 redux-thunk,我特地问你如何处理从 promise 返回的 400 错误。
我们的设置非常基本,但我相信我们应该能够
const export doSomething = object => {
const promise = API.doSomething(object)
return {
type: "DO_SOMETHING",
payload: {promise: promise}
}
}
减速器
export default (state = initialstate, action) {
switch(action.type){
case "DO_SOMETHING_FULFILLED":
return action.payload
case "DO_SOMETHING_REJECTED":
return console.log(action.payload)
default:
return initialstate
}
任何帮助是极大的赞赏。
解决方案
首先你不需要将payload设置为{promise: promise}
直接把promise先试试这个
export const doSomething = object => {
return {
type: "DO_SOMETHING",
payload: API.doSomething(object)
}
}
这只是一点装饰建议(非义务)
export const doSomething = object => ({
type: "DO_SOMETHING",
payload: API.doSomething(object)
})
现在答案是:首先,您需要检查 API.doSomething(object) 是否抛出错误或在 400 响应代码的情况下返回 Promise.reject()
如果不是,你需要让它抛出
if(res.code === 400) {
throw new Error()
}
// Or just use a library like axios
Promise 不知道你的代码里面发生了什么,为了到达DO_SOMETHING_REJECTED
IsAPI.doSomething(object)
抛出 400