【问题标题】:React Query useInfiniteQuery invalidate individual itemsReact Query useInfiniteQuery 使单个项目无效
【发布时间】:2021-05-29 01:24:45
【问题描述】:

在使用 useInfiniteQuery 时如何使单个项目无效? 这是一个示例,展示了我要完成的工作。

假设我有一个成员列表,每个成员都有一个关注按钮。当我按下关注按钮时,会单独调用服务器以标记给定用户正在关注另一个用户。在此之后,我必须使整个无限查询无效以反映单个成员的关注状态。这意味着我可能在无限查询中加载了很多用户,我需要重新获取所有已加载的项目,以反映一项的更改。

我知道我可以在 follow fetch 返回成功时更改 queryClient.setQueryData 中的值,但如果不遵循此操作和成员的失效和获取,我基本上会与服务器不同步并依赖本地数据。

有什么方法可以解决这个问题?

这是一个参考用户界面照片,以防万一。

【问题讨论】:

    标签: reactjs react-native react-query


    【解决方案1】:

    我认为目前不可能,因为 react-query 没有标准化缓存和底层架构。所以列表中的一个条目(不管它是否无限)在任何情况下都不对应于详细查询。

    如果你在query-keys前面加上相同的字符串,你可以利用部分query key匹配一次性失效:

    ['users', 'all']
    ['users', 1]
    ['users', 2]
    

    queryClient.invalidateQueries(['users]) 将使所有三个查询无效。

    但是是的,它会重新获取整个列表,如果您不想使用 setQueryData 手动设置,我目前看不到任何其他方式。

    如果您从突变中返回一个用户的全部详细数据,我不明白为什么使用 setQueryData 设置它会使您与后端不同步。我们经常这样做:)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-11-09
      • 2022-10-15
      • 2022-08-08
      • 2023-01-07
      • 2011-10-21
      • 1970-01-01
      • 2021-02-17
      • 1970-01-01
      相关资源
      最近更新 更多