HarmonyOS swiper数据刷新问题?

使用swiper时,数据更新了,界面显示还是保留在上次的第二屏,如何能在数据刷新时回到第一屏呢

阅读 547
1 个回答

参考以下示例代码:

@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 }
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进