// 测试分页逻辑修复 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('✅ 索引始终正确对应用户看到的列表位置')