首页 > web前端 > js教程 > 如何在 Redux 和 redux-promise-middleware 中使用 Fetch 处理非 OK 状态代码?

如何在 Redux 和 redux-promise-middleware 中使用 Fetch 处理非 OK 状态代码?

DDD
发布: 2024-11-15 14:52:02
原创
1044 人浏览过

How to Handle Non-OK Status Codes with Fetch in Redux and redux-promise-middleware?

Fetch:通过拒绝和错误捕获处理非正常状态代码

提供的代码利用 Redux 中的 'whatwg-fetch' 填充和 redux-promise-middleware 用于数据检索。然而,问题在于处理非 OK 状态代码(4xx 和 5xx),因为 Fetch Promise 通常只会在网络错误时拒绝。

拒绝处理

确保对于非 OK 状态代码,使用自定义错误消息拒绝承诺,请考虑以下方法:

import 'whatwg-fetch';

function fetchVehicle(id) {
    return dispatch => {
        return dispatch({
            type: 'FETCH_VEHICLE',
            payload: fetch(`http://swapi.co/api/vehicles/${id}/`)
                .then(res => res.json())
                .then(data => {
                    if (!res.ok) {
                        throw new Error(`Non-OK status code: ${res.status}`);
                    }
                    return data;
                })
                .catch(error => {
                    throw error;
                })
        });
    };
}
登录后复制

错误捕获

在操作创建者中,当响应状态为非OK时会抛出错误,在reducer中处理action时可以捕获此错误。

示例Reducer:

case 'FETCH_VEHICLE': {
    return {
        ...state,
        isLoading: true,
    };
}
case 'FETCH_VEHICLE_FULFILLED': {
    return {
        ...state,
        isLoading: false,
        vehicle: action.payload,
    };
}
case 'FETCH_VEHICLE_REJECTED': {
    return {
        ...state,
        isLoading: false,
        error: action.payload,
    };
}
登录后复制

在此更新的代码中,“FETCH_VEHICLE_REJECTED”操作的有效负载将包含在操作创建者中创建的错误消息。这允许在应用程序中进行正确的错误处理和显示。

以上是如何在 Redux 和 redux-promise-middleware 中使用 Fetch 处理非 OK 状态代码?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板