You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用useQuery获取分页数据时,组件未更新如何解决?

问题原因及解决办法

你的问题核心在于React Query的查询键(queryKey)没有包含分页参数,导致页码变化时,React Query认为这是同一个查询,直接复用了之前的缓存数据,没有重新发起请求。只有当浏览器标签页切换触发React Query的后台刷新机制时,才会重新获取数据并更新组件。

具体修改步骤

1. 调整查询键的生成逻辑

修改你的API请求文件,让getUsersQueryKey接收page参数,返回包含分页信息的数组(React Query会根据数组的每一项判断查询是否唯一):

export const getUsersQueryKey = (page: number) => ["users", page];

export const useUsersQuery = (page: number) =>
  useQuery(getUsersQueryKey(page), () =>
    axios
      .get(`http://localhost:8081/api/users?pageNumber=${page}&pageSize=2`)
      .then((response) => response.data.content as User[])
  );

2. 容器组件无需额外修改

你的UsersContainer组件中已经正确传递了page参数给useUsersQuery,修改查询键后,当page状态变化时,React Query会自动识别到这是一个新的查询,发起请求并更新组件中的data,表格也就会同步渲染新页码的数据了。

补充说明

React Query通过queryKey来管理缓存和触发查询更新,只有当queryKey发生变化时,才会重新执行查询逻辑。将分页参数加入queryKey后,不同页码的请求会被视为独立的查询,各自缓存数据,切换页码时既会自动请求新数据,也能保留之前页码的缓存,提升用户体验。

内容的提问来源于stack exchange,提问作者m_novak

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 04:15:39