【问题标题】:Accessing cached data in RTK Query(new)访问 RTK 查询中的缓存数据(新)
【发布时间】:2022-07-10 08:15:42
【问题描述】:

假设我们有 3 个组件。 首先是索引,它是父级。 第二个是过滤器组件,第三个是表格组件。 我使用突变来过滤一些数据并将它们显示在表格中。 在过滤器组件中我这样做了:

  const [filterSomeData] = useFilterSomeDataMutation();
  const data = filterSomeData(myFilter);

现在我需要访问表格组件中的数据。 Redux 工具包查询每个请求都会缓存结果,我该如何访问?

【问题讨论】:

    标签: reactjs next.js redux-toolkit rtk-query


    【解决方案1】:

    通常:如果您从服务器接收数据而不触发服务器上的更改,您应该使用查询,而不是突变。是的,您可以使用 Queries 进行 POST 请求,语法与突变 100% 相同。

    那么您应该在所有需要该数据的组件中使用 useQuery 挂钩,并使用与您最初传入的参数相同的参数。这意味着如果您有类似过滤器的东西,您应该通过 props 传递该过滤器(通过将过滤器状态提升到一个共同的父级)或将该过滤器保存在 Redux 切片中并在调用查询钩子之前从 Redux 获取它.

    由于您在多个组件中使用相同的参数调用 useQuery 钩子,因此它不会发出多个请求,而是重用第一个请求的响应。

    【讨论】:

    • 感谢您的回答很有帮助,顺便问一下,有没有办法不在另一个组件中调用 useQuery 挂钩?可能是 fixedCacheKey 或使用 requestId 访问缓存数据?
    • 没有。缓存数据使用调用它的参数进行索引。如果这些参数中的任何一个发生变化,就会创建一个新的独立缓存条目。
    【解决方案2】:

    您需要的是api.endpoints.foo.useLazyQuery()api.useLazyFooQuery()。通过这种方式,您可以评估该端点上最后获取的数据。 阅读更多官方文档:https://redux-toolkit.js.org/rtk-query/api/created-api/hooks#usequerystate

    【讨论】:

      猜你喜欢
      • 2021-11-01
      • 2023-02-06
      • 2023-02-16
      • 2021-11-06
      • 1970-01-01
      • 2022-11-21
      • 2023-01-27
      • 1970-01-01
      • 2022-08-03
      相关资源
      最近更新 更多