HarmonyOS 刷新Swiper里的数据时,index下标还是上一次的值

测试发现,刷新Swiper里的数据时,index下标还是上一次的值,请见demo代码:

@Entry  
@Component  
struct Index {  
  @State viewPagerData: Array<testBean> = new Array  
  @State viewPagerData2: Array<testBean> = new Array  
  @State update: boolean = false  
  aboutToAppear(): void {  
    for (let i = 0; i < 3; i++) {  
      let item = new testBean()  
      item.id = i  
      item.name = '第一组测试数据:' + i  
      this.viewPagerData.push(item)  
    }  
    for (let i = 0; i < 3; i++) {  
      let item = new testBean()  
      item.id = i  
      item.name = '第二组数据:' + i  
      this.viewPagerData2.push(item)  
    }  
  }  
  build() {  
    Column() {  
      Button('刷新数据')  
        .onClick(() => {  
          this.update = !this.update  
        })  
      Swiper() {  
        ForEach(this.update ? this.viewPagerData2 : this.viewPagerData, (item: testBean, index) => {  
          Text(item.name)  
            .width('100%')  
            .height('100%')  
            .backgroundColor(Color.Pink)  
        }, (item: testBean, index: number) => `${JSON.stringify(item)}_${index}`)  
      }  
      .cachedCount(0)  
      .loop(false)  
      .vertical(true)  
      .itemSpace(10)  
    }  
  }  
}  
export class testBean {  
  id?: number  
  name?: string  
}
  • 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.

期望结果:能否点击刷新按钮,刷新完成数据之后,Swiper初始化到第一个下标?应该如何实现?

HarmonyOS
2024-10-10 10:46:54
浏览
收藏 0
回答 1
回答 1
按赞同
/
按时间
FengTianYa

参考以下代码:

@Entry  
@Component  
struct Index {  
  @State viewPagerData: Array<testBean> = new Array  
  @State viewPagerData2: Array<testBean> = new Array  
  @State update: boolean = false  
  @State index: number = 0  
  aboutToAppear(): void {  
    for (let i = 0; i < 3; i++) {  
      let item = new testBean()  
      item.id = i  
      item.name = 'viewPagerData:' + i  
      this.viewPagerData.push(item)  
    }  
    for (let i = 0; i < 3; i++) {  
      let item = new testBean()  
      item.id = i  
      item.name = 'viewPagerData2:' + i  
      this.viewPagerData2.push(item)  
    }  
  }  
  build() {  
    Column() {  
      Button(this.update? 'viewPagerData2' : 'viewPagerData')  
        .onClick(() => {  
          this.update = !this.update  
          this.index = 0  
        })  
      Swiper() {  
        ForEach(this.update ? this.viewPagerData2 : this.viewPagerData, (item: testBean, index) => {  
          Text(item.name)  
            .width('100%')  
            .height('100%')  
            .backgroundColor(Color.Pink)  
        }, (item: testBean, index: number) => `${JSON.stringify(item)}_${index}`)  
      }  
      .index(this.index)  
      .cachedCount(0)  
      .loop(false)  
      .vertical(true)  
      .itemSpace(10)  
      .onChange((index) => {  
        this.index = index  
      })  
    }  
  }  
}  
export class testBean {  
  id?: number  
  name?: string  
}
  • 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.
分享
微博
QQ
微信
回复
2024-10-10 16:05:27
相关问题
HarmonyOS 每秒执行一次函数
1079浏览 • 2回复 待解决
HarmonyOS 如何只取消某一次监听
856浏览 • 1回复 待解决
有没有一次编译,多端部署资料
1146浏览 • 1回复 待解决
HarmonyOS setInterval如何立即执行一次
1126浏览 • 1回复 待解决
HarmonyOS swiper数据刷新问题
661浏览 • 1回复 待解决
订阅接近光传感器只出一次数据
2649浏览 • 1回复 待解决
HarmonyOS flutter run 会自动uninstall 一次
875浏览 • 1回复 待解决
HarmonyOS web组件拦截每一次跳转
758浏览 • 1回复 待解决
HarmonyOS里面不能一次创建多级目录
1161浏览 • 1回复 待解决