原始页面备份
备份时间: 2026-02-08 备份原因: LoadMoreList 组件迁移前的代码备份 迁移提交: ce4b99b6 refactor: 迁移所有剩余页面到 LoadMoreList 组件
📁 备份文件列表
| 文件 | 大小 | 说明 |
|---|---|---|
message-index.vue.bak |
3.7 KB | 消息列表页(迁移前) |
product-center-index.vue.bak |
13.9 KB | 产品中心页(迁移前) |
material-list-index.vue.bak |
24.6 KB | 资料列表页(迁移前) |
search-index.vue.bak |
17 KB | 搜索页(迁移前) |
🔄 如何恢复原始代码
方法 1: 手动恢复(推荐)
如果新组件有问题,可以手动恢复:
# 1. 删除当前文件
rm src/pages/message/index.vue
# 2. 从备份恢复
cp docs/backups/original-pages/message-index.vue.bak src/pages/message/index.vue
# 3. 重复其他文件...
方法 2: 使用 Git 恢复
使用 Git 命令恢复到迁移前的版本:
# 恢复单个文件
git checkout ce4b99b^ -- src/pages/message/index.vue
# 恢复所有文件
git checkout ce4b99b^ -- src/pages/message/index.vue \
src/pages/product-center/index.vue \
src/pages/material-list/index.vue \
src/pages/search/index.vue
📋 迁移前后对比
message 页面
| 指标 | 迁移前 | 迁移后 |
|---|---|---|
| 代码行数 | 149 行 | 229 行 |
| 分页逻辑 | 手动实现 | LoadMoreList 组件 |
| 下拉刷新 | ❌ 无 | ✅ 有 |
product-center 页面
| 指标 | 迁移前 | 迁移后 |
|---|---|---|
| 代码行数 | 510 行 | 592 行 |
| 分页逻辑 | 手动实现 | LoadMoreList 组件 |
| 搜索功能 | ✅ 有 | ✅ 保留 |
| Tabs | ✅ 有 | ✅ 保留 |
material-list 页面
| 指标 | 迁移前 | 迁移后 |
|---|---|---|
| 代码行数 | 888 行 | 828 行 |
| 分页逻辑 | 手动实现 | LoadMoreList 组件 |
| 分类缓存 | ✅ 有 | ✅ 保留 |
| 搜索防抖 | ✅ 有 | ✅ 保留 |
search 页面
| 指标 | 迁移前 | 迁移后 |
|---|---|---|
| 代码行数 | 603 行 | 549 行 |
| 分页逻辑 | 手动实现 | LoadMoreList 组件 |
| 双列表系统 | ✅ 有 | ✅ 保留 |
| 自动 tab 选择 | ✅ 有 | ✅ 保留 |
⚠️ 注意事项
-
备份文件只读: 这些是
.bak文件,只用于参考,不应直接修改 - 使用 Git 版本控制: 建议使用 Git 命令恢复,而不是手动复制
- 测试新组件: 如果新组件有问题,先检查是否可以通过修改解决
- 保留备份: 建议保留这些备份文件,直到确认新组件完全稳定
🔍 迁移问题排查
如果新组件有问题,按以下步骤排查:
1. 检查 Props 是否正确
<!-- ❌ 错误:缺少必需 props -->
<LoadMoreList :list="products" @load-more="handleLoadMore">
<!-- ✅ 正确:包含所有必需 props -->
<LoadMoreList
:list="products"
:page="page"
:has-more="hasMore"
:loading="loading"
:loading-more="loadingMore"
@load-more="handleLoadMore"
>
2. 检查数据加载逻辑
// ❌ 错误:未正确处理追加数据
const handleLoadMore = async (page) => {
const newData = await fetchData({ page })
currentList.value = newData // 错误:会覆盖之前的数据
}
// ✅ 正确:追加数据
const handleLoadMore = async (page) => {
const newData = await fetchData({ page })
currentList.value = [...currentList.value, ...newData]
}
3. 检查 hasMore 判断逻辑
// ❌ 错误:使用总数量判断
hasMore.value = currentList.value.length < total
// ✅ 正确:使用返回数据量判断
hasMore.value = newData.length >= pageSize
4. 检查 page 初始值
// 如果 API 页码从 1 开始
const page = ref(1)
// 如果 API 页码从 0 开始
const page = ref(0)
// 组件会自动 +1,所以不需要手动 +1
📖 相关文档
创建时间: 2026-02-08 维护者: Claude Code