typescript RTK查询createApi结果:“属性'....'在类型'API'上不存在< BaseQueryFn>”

rseugnpd  于 2023-04-22  发布在  TypeScript
关注(0)|答案(3)|浏览(106)

以下代码使用RTK查询创建Redux Hook:

export const specialtiesApi = createApi({
    reducerPath: 'specialtiesApi',
    baseQuery: fetchBaseQuery({ baseUrl: 'https://someplace.com/' }),
    endpoints: (builder) => ({
        getSpecialties: builder.query({
            query: (name) => `specialties`,
        }),
    }),
});

export const { useGetSpecialtiesQuery } = specialtiesApi;

最后一行代码抛出一个Typescript编译时错误:

Property 'useGetSpecialtiesQuery' does not exist on type 'Api<BaseQueryFn<string | FetchArgs, unknown, FetchBaseQueryError, {}, FetchBaseQueryMeta>, { getSpecialties: QueryDefinition<...>; }, "specialtiesApi", never, unique symbol>'

我的代码是使用Typescript 4.3.5从https://redux-toolkit.js.org/rtk-query/usage-with-typescript改编而来的。
我看不出有什么问题。有什么想法吗?

yftpprvb

yftpprvb1#

确保从@reduxjs/toolkit/query/react模块而不是@reduxjs/toolkit/dist/query导入createApifetchBaseQuery函数。
它应该是:

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

非:

import { createApi, fetchBaseQuery } from '@reduxjs/toolkit/dist/query';

软件包版本:

"typescript": "^4.3.5",
"@reduxjs/toolkit": "^1.6.1"
9lowa7mx

9lowa7mx2#

我忘记在导出中添加useMutation,这就是导致我出现问题的原因。

  • 经典的处女nub错误

export const { signInUser } = authApi;

export const { useSignInUserMutation } = authApi;
nnsrf1az

nnsrf1az3#

另外,不要忘记将useQuery添加到导出的钩子的名称中。
例如:
您的端点名称:getPhotoList
要导出的挂钩的名称:useGetPhotoListQuery

相关问题