【问题标题】:How to access rtk-query slice data for given endpoint / from prepareHeaders?如何从prepareHeaders访问给定端点/的rtk查询切片数据?
【发布时间】:2021-11-08 13:26:56
【问题描述】:

我在解决常见问题时遇到了麻烦,应该由 RTKQuery 处理。

当我的应用程序启动时,它将加载configuration。此配置将包含 baseUrl、标头中使用的一些数据等内容。

我使用createApi(...) 来创建配置切片:

export interface Configuration {
  baseUrl: string;
  language: string;
}

export const configurationApi = createApi({
  reducerPath: "configuration",
  baseQuery: fetchBaseQuery({ baseUrl: "/api" }),
  endpoints: (builder) => ({
    loadConfiguration: builder.query<Configuration, unknown>({ //the generic expects second arugment...
      query: () => "/configuration",
    }),
  }),
});

我想在以下请求中使用加载配置的 baseUrl 和语言。文档指出 prepareHeaders 是正确的地方:

export const testApi = createApi({
  reducerPath: "test",
  baseQuery: fetchBaseQuery({
    baseUrl: "/api", //need this from configuration
    prepareHeaders: (headers, { getState }) => {
      const state = getState() as RootState;
     // nees to get language from configuration

我无法从configuration 中的testApi 访问结果

我在文档/示例中找不到如何访问任何端点的数据。

假设我们有端点loadUser

endpoints: (builder) => ({
    loadUser: builder.query<Partial<UserResponse>, UserRequest>({
      query: ({ userId }) => ({
        url: "/api/user"
      }),
    }),
  }),

是否有简单的方法来访问最新数据(关于用户 ID,只是用户端点的最新数据)? 看起来这应该是微不足道的,但似乎不是。

提前致谢。

【问题讨论】:

    标签: redux redux-toolkit rtk-query rtk


    【解决方案1】:
    const selector = api.endpoints.foo.select(argumentLikeInTheHook)
    const result = selector(getState())
    

    您可以在 here 上找到文档。

    但通常请记住,如果没有组件正在使用该端点数据,它将在(默认)60 秒后被缓存收集。

    【讨论】:

    • 了解api 到底是什么以及它来自哪里会很有帮助。我猜它是prepareHeaders 函数的第二个参数,它的类型是Pick&lt;BaseQueryApi, "getState" | "extra" | "endpoint" | "type" | "forced"&gt;,因此没有字段endpoints ?
    • @Alex api 在该示例中是由createApi 创建的对象。我假设这里的整个问题都是关于createApi,这个命名应该很明显。
    猜你喜欢
    • 2022-07-07
    • 2021-10-29
    • 2022-07-10
    • 2023-02-16
    • 1970-01-01
    • 2022-10-04
    • 1970-01-01
    • 2021-11-01
    • 2012-08-09
    相关资源
    最近更新 更多