如何从我的商店获取 RTK 查询生成的数据?

How can I get data from my store generated by RTK Query?

我正在使用一个非常基本的 RTK 查询挂钩从 API 获取一些用户数据。我如何访问保存在组件内部商店中的数据?我无法通过RTK查询从特定事务中生成的存储中获取数据。

我有一个简单的 Post API,我调用了 getPosts 挂钩。在 Redux devtools 中,我可以在我的商店中看到来自 RTK 查询挂钩的数据:

Post API

import { createApi, fetchBaseQuery } from '@rtk-incubator/rtk-query';

export interface Post {
  id: number;
  name: string;
  fetched_at: string;
}

type PostsResponse = Post[];

export const postApi = createApi({
  reducerPath: 'postsApi',
  baseQuery: fetchBaseQuery({ baseUrl: '/' }),
  entityTypes: ['Posts'],
  endpoints: (build) => ({
    getPosts: build.query<PostsResponse, void>({
      query: () => 'posts',
      provides: (result) => [
        ...result.map(({ id }) => ({ type: 'Posts', id } as const)),
        { type: 'Posts', id: 'LIST' },
      ],
    }),
  }),
});

Post调用 hook 后保存在存储中

最简单的方法是在每个需要数据的组件中调用 getPosts 挂钩。 它将使用缓存中的数据而不发出额外的请求 - 但如果您稍后在没有父组件的情况下安装该组件,或者在数据尚不存在的另一个上下文中,它将发出请求。

因此您可以保证始终以这种方式获取数据。