【问题标题】:Problem with Redux Toolkit error handlingRedux Toolkit 错误处理问题
【发布时间】:2021-11-18 21:15:49
【问题描述】:

我创建了一个端点来获取用户数据并配置了我的应用程序。它运作良好,但需要问有没有办法创建全局错误处理程序?例如,如果我想将用户重定向到外部网站的任何请求出现错误status === 400

const headers = {
  Accept: 'application/json',
  'Content-Type': 'application/json',
};

const baseUrl = '/api';

const createRequest = (url, method) => ({ url, method, headers });

export const userApi = createApi({
  reducerPath: 'userApi',
  baseQuery: fetchBaseQuery({ baseUrl }),
  endpoints: (builder) => ({
    getUser: builder.query({
      query: () => createRequest('/user/get', 'GET'),
    }),
  }),
});

【问题讨论】:

    标签: reactjs react-redux redux-toolkit


    【解决方案1】:

    您可以创建一个通用请求文件,并将该文件用于每个请求调用,如果错误代码为 400,您可以在 catch 中设置重定向逻辑。我们使用相同的方式来处理未经授权的用户请求。

    这是基本代码,

    import axios from 'axios';
    
    const request = (method = 'get', url, requestPayload = {}) => new Promise((resolve, reject) => {
      const token = localStorage.getItem('token');
      const preparedRequest = {
        method,
        url: `${process.env.REACT_APP_API_BASE_URL}${url}`,
        data: requestPayload,
        headers: {
          Authorization: `Bearer ${token}`
        }
      };
      axios(preparedRequest)
        .then((data) => resolve(data.data))
        .catch((err) => {
          if (err.response?.status === 401) {
            localStorage.removeItem('token');
            window.location.href = '/login';
          }
          reject(err);
        });
    });
    
    export default request;
    

    您可以根据您的要求覆盖此功能。

    【讨论】:

    • 我可以将其作为函数传递给构建器查询吗?
    猜你喜欢
    • 2021-06-08
    • 2021-11-06
    • 2021-12-22
    • 2022-11-28
    • 2023-01-15
    • 1970-01-01
    • 2021-11-26
    • 2014-07-31
    • 2016-02-26
    相关资源
    最近更新 更多