分页第二页没有分页按钮的修复记录
问题概括: 点击首页分页进入第 2 页(/?page=2)后,分页按钮消失。
问题类别: 前端逻辑 / 分页计算
影响范围: 首页分页组件(第 2 页及以后)
问题原因: src/pages/Home.js 中使用 posts.length(当前页返回的数组长度)计算 totalPages。第 2 页仅返回 3 篇文章,posts.length = 3,导致 Math.ceil(3 / 10) = 1,条件 totalPages > 1 不成立,分页按钮被隐藏。
排查思路:
- 观察 Bug 1 和 Bug 2 呈对称异常(首页有分页但列表未截断,第 2 页列表正确但无分页),推断
Home.js中"切片逻辑"和"分页传参逻辑"存在耦合错误; - 检查
Home.js发现totalPosts = posts.length使用了当前页数据长度; - 推断 Pagination 组件接收了错误的数据源(切片后的子数组长度而非全量总数);
- 提出应基于全量文章总数计算分页,修改
Home.js引入api.getTotalDiscussions()作为全量计数源。
最佳解决方法:
- 在
src/api/github.js中新增getTotalDiscussions()方法:通过per_page: 100获取全量文章并返回数组长度,缓存键使用discussions_total,TTL 与文章列表一致(5 分钟); - 在
src/pages/Home.js中,使用api.getTotalDiscussions()获取全量文章总数(13)替代posts.length,用于计算totalPages并传给 Pagination 组件。
验证状态: ✅ 用户已确认