use<endpoint><modifier>和endpoints.<endpoint>.<modifier>有区别吗?

Is there a difference between use<endpoint><modifier> and endpoints.<endpoint>.<modifier>?

我目前正在将 RTK 和 RTKQ 集成到现有项目中,并希望确保我编写的代码遵循最佳实践。从RTK Query文档来看,这两种方式似乎没有功能上的区别,都被使用了。

最初我使用挂钩命名方案直接从 Api 对象(useGetDataQuery 等)中导出各个挂钩。但是,据我所知,使用实际的端点,然后在它们上使用 useQuery()、useLazyQuery() 等...是一种更好的方法,因为如果碰巧更改名称,重写导出和导入的时间会大大减少端点的名称或您想将其用于哪种查询。到目前为止,我唯一看到的是专门命名的端点挂钩似乎更适合我的 IDE (WebStorm)。

我一直这样使用端点:


const splitApi = emptyApi.injectEndpoints({...});
export const {
  getData
} = splitApi.endpoints;

// In a separate file
import { getData } from 'splitApi';
const dataQuery =  getData.useQuery();

使用“use 方法比使用“..”方法有好处吗?我上面描述的方法有什么问题吗?

api.useGetPokemonQueryapi.endpoints.getPokemon.useQuery 实际上是完全相同的函数。但是,我们假设大多数人通常对调用“查询”和“变异”挂钩感兴趣,因此这些挂钩可以在 api 对象本身上访问并给出匹配的不同名称。

两者都有效,但我通常会默认重新导出 API 对象中的那些。我不希望“重命名端点”经常发生。

请注意,如果您正在执行 api.injectEndpoints(),return 值是 相同的 api 对象,但具有更新的 TS 类型.因此,在此文件中,您可以执行 export const { useGetDataQuery } = splitApi.