使用 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
,它起作用了。
我正在为这个应用程序使用 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
,它起作用了。