alc*_*eoh 22 typescript react-redux redux-toolkit rtk-query
以下代码使用 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;
Run Code Online (Sandbox Code Playgroud)
最后一行代码抛出 Typescript 编译时错误:
Property 'useGetSpecialtiesQuery' does not exist on type 'Api<BaseQueryFn<string | FetchArgs, unknown, FetchBaseQueryError, {}, FetchBaseQueryMeta>, { getSpecialties: QueryDefinition<...>; }, "specialtiesApi", never, unique symbol>'
Run Code Online (Sandbox Code Playgroud)
我的代码改编自https://redux-toolkit.js.org/rtk-query/usage-with-typescript使用 Typescript 4.3.5。
我看不出有什么问题。有任何想法吗?
sli*_*wp2 92
确保从模块导入createApi和函数而不是.fetchBaseQuery@reduxjs/toolkit/query/react@reduxjs/toolkit/dist/query
它应该是:
import { createApi, fetchBaseQuery } from '@reduxjs/toolkit/query/react';
Run Code Online (Sandbox Code Playgroud)
不是:
import { createApi, fetchBaseQuery } from '@reduxjs/toolkit/dist/query';
Run Code Online (Sandbox Code Playgroud)
更新
另请参阅官方文档API Slices:React Hooks
但是,RTK Query 还提供了为每个端点自动生成 React hook 的功能。由于这具体取决于 React 本身,RTK Query 提供了一个备用入口点,该入口点公开了包含该功能的 createApi 的自定义版本:
import { createApi, fetchBaseQuery } from '@reduxjs/toolkit/query/react';
Run Code Online (Sandbox Code Playgroud)
如果您使用了 React 特定版本的 createApi,则生成的 Api 切片结构还将包含一组 React hooks。
封装版本:
import { createApi, fetchBaseQuery } from '@reduxjs/toolkit/dist/query';
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
15630 次 |
| 最近记录: |