Codex Assistant
昨天 58d9f460b2f8c34430285115e2557d18333c5cab
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
// 测试分页逻辑修复
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('✅ 索引始终正确对应用户看到的列表位置')