无法使用Redux查询发出Get请求

6yoyoihd  于 2023-01-21  发布在  其他
关注(0)|答案(1)|浏览(121)

老实说,我不知道我做错了什么。我尝试使用Get请求来提取API数据,我使用的是Redux Query。下面是我的代码:

export const userCartApi = api.injectEndpoints({
 endpoints: (builder)=>({
    getCart: builder.query({
        query: ()=>{
            return{
                url: "/cart",
                method: "get",
                
            };
        },
    }),

}),
overrideExisting: false
});

在我使用它的组件内部:

export const {useGetCartQuery } = userCartApi

import { useGetCartQuery } from "../../store/Features/CartApi/CartApi";
const [getCart, {data: cartData, isError: isCartError, isSuccess: isCartSuccess, error: 
 getCartEror, isLoading: isCartLoading,}] = useGetCartQuery();


const getCart = async()=>{
    await getCart()
 }

这家店

export const Store = configureStore({
reducer:{
    [userApi.reducerPath]: userApi.reducer,
    [userCartApi.reducerPath]: userCartApi.reducer,
    session: sessionSlice,
    appLoader: appLoaderSlice,
    cart: cartReducer,
    user: userSlice,
},
middleware: (getDefaultMiddleware)=> getDefaultMiddleware().concat(userApi.middleware)
});

我得到的错误:

Invalid attempt to destructure non-iterable instance.
 In order to be iterable, non-array objects must have a [Symbol.iterator]() method.

如果我简单地将getCart: builder.query更改为getCart: builder.mutation,并将钩子重命名为useGetCartMutation而不是useGetCartQuery,那么它就可以工作并获取我的数据。

c6ubokkw

c6ubokkw1#

这都是我的错,拜托。我已经看到它是如何正确地做的,现在它正在工作:我只需要这样获取数据:

const  {data: cartData, isError: isCartError, isSuccess: isCartSuccess, 
error: 
getCartEror, isLoading: isCartLoading,} = useGetCartQuery();

而不是这样:

const [getCart, {data: cartData, isError: isCartError, isSuccess: isCartSuccess, 
error: 
getCartEror, isLoading: isCartLoading,}] = useGetCartQuery();

相关问题