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

如何使用Swiper与RTK Query实现无限滚动功能

解决方案

你的问题核心是缺少拉取终止的判断逻辑,按以下步骤修改即可解决持续请求的问题:

  • 首先利用Pokemon API返回的count字段做边界判断:该字段标识了接口全量数据的总条数,你可以将当前已加载的宝可梦列表长度和该值做对比,判定是否还有下一页数据。
  • 新增加载拦截逻辑:在Swiper的reachEnd触发时,先判断两个条件:当前是否还有下一页、是否正处于加载状态,两个条件都满足(有下一页且不在加载中)才触发下一页请求,否则直接终止后续逻辑。

参考代码修改示例:

// 接口调用后计算是否还有下一页
const { data, isFetching } = useGetPokemonListQuery(pageParam);
const hasNextPage = data ? allPokemon.length < data.count : false;

// Swiper触底回调修改
const onSwiperReachEnd = () => {
  if (!hasNextPage || isFetching) return;
  setPageParam(prev => prev + 1);
};

你还可以根据hasNextPage的状态在列表底部渲染「没有更多数据」的提示,进一步优化交互体验。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 19:24:00