// 测试分页逻辑修复
|
console.log('=== 测试分页逻辑修复 ===')
|
|
// 模拟小程序页面数据
|
let mockPageData = {
|
activities: [],
|
currentPage: 1,
|
pageSize: 10
|
}
|
|
// 模拟 loadActivities 函数的核心逻辑
|
function testLoadActivities(isLoadMore = false, newData, existingData = []) {
|
console.log(`\n--- 测试场景: isLoadMore=${isLoadMore} ---`)
|
console.log('现有数据长度:', existingData.length)
|
console.log('新数据:', newData.map(item => `ID:${item.id}`).join(', '))
|
|
// 核心合并逻辑
|
const mergedActivities = isLoadMore && existingData.length > 0
|
? [...existingData, ...newData]
|
: newData
|
|
console.log('合并后数据:', mergedActivities.map(item => `ID:${item.id}`).join(', '))
|
console.log('合并后索引:', mergedActivities.map((item, index) => `${index}:ID${item.id}`).join(', '))
|
|
return mergedActivities
|
}
|
|
// 测试数据
|
const page1Data = [
|
{ id: '1', name: '活动1' },
|
{ id: '2', name: '活动2' },
|
{ id: '3', name: '活动3' }
|
]
|
|
const page2Data = [
|
{ id: '4', name: '活动4' },
|
{ id: '5', name: '活动5' },
|
{ id: '6', name: '活动6' }
|
]
|
|
const searchResultData = [
|
{ id: '7', name: '搜索活动1' },
|
{ id: '8', name: '搜索活动2' }
|
]
|
|
console.log('=== 测试场景 ===')
|
|
// 场景1: 初始加载第1页
|
console.log('\n🔸 场景1: 初始加载第1页')
|
let result1 = testLoadActivities(false, page1Data, [])
|
mockPageData.activities = result1
|
|
// 场景2: 加载更多第2页
|
console.log('\n🔸 场景2: 加载更多第2页')
|
let result2 = testLoadActivities(true, page2Data, mockPageData.activities)
|
mockPageData.activities = result2
|
|
// 场景3: 搜索(应该全量替换,不是追加)
|
console.log('\n🔸 场景3: 搜索(应该全量替换)')
|
let result3 = testLoadActivities(false, searchResultData, mockPageData.activities)
|
mockPageData.activities = result3
|
|
// 场景4: 刷新(应该全量替换)
|
console.log('\n🔸 场景4: 刷新(应该全量替换)')
|
let result4 = testLoadActivities(false, page1Data, mockPageData.activities)
|
mockPageData.activities = result4
|
|
console.log('\n=== 测试结果验证 ===')
|
console.log('✅ 场景1: 初始加载 - 索引应该是 0,1,2')
|
console.log('✅ 场景2: 加载更多 - 索引应该是 0,1,2,3,4,5')
|
console.log('✅ 场景3: 搜索替换 - 索引应该是 0,1 (重新开始)')
|
console.log('✅ 场景4: 刷新替换 - 索引应该是 0,1,2 (重新开始)')
|
|
console.log('\n=== 修复前的问题 ===')
|
console.log('❌ 修复前: 搜索时会追加到现有数据后面')
|
console.log('❌ 结果: 点击第1个item,索引变成了6+0=6,而不是0')
|
console.log('❌ 你遇到的问题: 点击第1个item,索引是9,说明前面有9个旧数据')
|
|
console.log('\n=== 修复后的效果 ===')
|
console.log('✅ 修复后: 只有真正的"加载更多"才追加数据')
|
console.log('✅ 搜索、筛选、刷新都是全量替换')
|
console.log('✅ 索引始终正确对应用户看到的列表位置')
|