使用 redux 工具包和 RTK-Query 获取获取错误

Getting a fetch error using redux toolkit and RTK-Query

我正在为这个应用程序使用 RTK-Query 和 Redux-toolkit,并且我根据文档使用 createApi 创建了一个 api-slice。

当我 运行 向后端发出请求时,我得到一个 "FETCH_ERROR";但是,当我 运行 使用 Axios 执行相同的请求时,我从后端正确获取了数据,这让我相信我的代码有错误。我只是不确定它到底在哪里。

这是错误:

Object {
  "api": Object {
    "config": Object {
      "focused": true,
      "keepUnusedDataFor": 60,
      "middlewareRegistered": true,
      "online": true,
      "reducerPath": "api",
      "refetchOnFocus": false,
      "refetchOnMountOrArgChange": false,
      "refetchOnReconnect": false,
    },
    "mutations": Object {},
    "provided": Object {},
    "queries": Object {
      "test(undefined)": Object {
        "endpointName": "test",
        "error": Object {
          "error": "TypeError: Network request failed",
          "status": "FETCH_ERROR",
        },
        "requestId": "BWOuLpOxoDKTzlUYFLW4x",
        "startedTimeStamp": 1643667104869,
        "status": "rejected",
      },
    },
    "subscriptions": Object {
      "test(undefined)": Object {
        "QJSCV641RznGWyudGWuMb": Object {
          "pollingInterval": 0,
          "refetchOnFocus": undefined,
          "refetchOnReconnect": undefined,
        },
      },
    },
  },
  "test": Object {
    "data": Array [],
  },
}

这是测试切片:

import { createSlice } from "@reduxjs/toolkit";

const testSlice = createSlice({
  name: "test",
  initialState: {
    data: [],
  },
  reducers: {
    getData: (state) => {
      state;
    },
  },
});

export const { getData } = testSlice.actions;
export default testSlice.reducer;

这是 api切片:

import { createApi, fetchBaseQuery } from "@reduxjs/toolkit/query/react";

export const apiSice = createApi({
  reducerPath: "test",
  baseQuery: fetchBaseQuery({ baseUrl: process.env.REACT_APP_backend_url }),
  endpoints: (builder) => ({
    test: builder.query({
      query: () => "/test",
    }),
  }),
});

export const { useTestQuery } = apiSice;

我通过在我的 .env 文件中将后端 URL 更改为我当前的 ipv4(用于 expo 开发,否则只是你的后端 URL 是什么)地址解决了这个问题,然后删除缓存,并重新启动我的应用程序。在我的例子中,我使用的是 expo,所以 expo r -c,它起作用了。