分页第二页没有分页按钮的修复记录

问题概括: 点击首页分页进入第 2 页(/?page=2)后,分页按钮消失。

问题类别: 前端逻辑 / 分页计算

影响范围: 首页分页组件(第 2 页及以后)

问题原因: src/pages/Home.js 中使用 posts.length(当前页返回的数组长度)计算 totalPages。第 2 页仅返回 3 篇文章,posts.length = 3,导致 Math.ceil(3 / 10) = 1,条件 totalPages > 1 不成立,分页按钮被隐藏。

排查思路:

  1. 观察 Bug 1 和 Bug 2 呈对称异常(首页有分页但列表未截断,第 2 页列表正确但无分页),推断 Home.js 中"切片逻辑"和"分页传参逻辑"存在耦合错误;
  2. 检查 Home.js 发现 totalPosts = posts.length 使用了当前页数据长度;
  3. 推断 Pagination 组件接收了错误的数据源(切片后的子数组长度而非全量总数);
  4. 提出应基于全量文章总数计算分页,修改 Home.js 引入 api.getTotalDiscussions() 作为全量计数源。

最佳解决方法:

  1. src/api/github.js 中新增 getTotalDiscussions() 方法:通过 per_page: 100 获取全量文章并返回数组长度,缓存键使用 discussions_total,TTL 与文章列表一致(5 分钟);
  2. src/pages/Home.js 中,使用 api.getTotalDiscussions() 获取全量文章总数(13)替代 posts.length,用于计算 totalPages 并传给 Pagination 组件。

验证状态: ✅ 用户已确认