1

我在解决常见问题时遇到了麻烦,应该由 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,只是用户端点的最新数据)?看起来这应该是微不足道的,但似乎并非如此。

提前致谢。

4

1 回答 1

-1
const selector = api.endpoints.foo.select(argumentLikeInTheHook)
const result = selector(getState())

您可以在此处找到相关文档。

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

于 2021-11-08T21:47:02.743 回答