使用代码拆分时如何创建 RTK-Query 端点类型

How to create RTK-Query endpoint types when using codesplitting

我目前正在为一个应用程序构建一个 rtk-query 包,我在其中使用代码拆分(通过使用 injectEndpoints,因为可能涉及数百个端点)。但是,我还想实现一个类似于 the automatic prefetch hook in the docs.

的预取挂钩

有没有办法为这些端点生成正确的 Typescript 类型?上面的钩子将端点类型定义为 type EndpointNames = keyof typeof api.endpoints,但是我所有的端点都是这样定义的(如文档所述):

export const emptySplitApi = createApi({
  baseQuery: fetchBaseQuery({ baseUrl: '/' }),
  endpoints: () => ({}), //
})

如果这不可能,从不同的 injectEndpoints 方法导出多个 usePrefetch 挂钩的最佳方法是什么?

我只是从每个文件中导出完整的 api 对象,然后就像 api1.usePrefetch()api2.usePrefetch().

这样你也可以确保正确的文件已经被加载,所以它被注入了。如果你要在父 api 上调用它,你永远无法确定端点是否已经被注入。