HarmonyOS Refresh组件中refreshing参数如何传入对象中的boolean值

给出如下demo,问题在TODO标记的地方已经指出:

@Entry
@Component
struct RefreshPage {
  @State refresh: RefreshBean = new RefreshBean(false)

  build() {
    Column() {
      Child({ refresh: this.refresh })
    }
  }
}

@Observed
export class RefreshBean {
  isRefreshing: boolean

  constructor(isRefreshing: boolean) {
    this.isRefreshing = isRefreshing
  }

  setRefresh(refresh: boolean) {
    this.isRefreshing = refresh
  }
}


@Component
struct Child {
  @Watch("changeRefreshing")
  @ObjectLink refresh: RefreshBean
  @State arr: String[] = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '10']
  @State isRefreshing: boolean = false
  //TODO:
  //1. 如何才能让RefreshBean中isRefreshing变化后,this.isRefreshing可以感知变化
  //或者 2. Refresh组件中的refreshing参数怎么传入RefreshBean对象的isRefreshing参数
  changeRefreshing() {
    this.isRefreshing = this.refresh.isRefreshing
  }

  build() {
    Refresh({ refreshing: $$this.isRefreshing }) {
      List() {
        ForEach(this.arr, (item: string) => {
          ListItem() {
            Text('' + item + this.isRefreshing)
              .width('100%')
              .height(100)
              .fontSize(16)
              .textAlign(TextAlign.Center)
              .borderRadius(10)
              .backgroundColor(0xFFFFFF)
          }
        }, (item: string) => item)
      }
      .onScrollIndex((first: number) => {
        console.info(first.toString())
      })
      .width('100%')
      .height('100%')
      .divider({
        strokeWidth: 1,
        color: Color.Yellow,
        startMargin: 10,
        endMargin: 10
      })
      .scrollBar(BarState.Off)
    }
    .onRefreshing(() => {
      setTimeout(() => {
        //TODO:
        this.refresh.setRefresh(false)

      }, 2000)
      console.log('onRefreshing test')
    })
    .backgroundColor(0x89CFF0)
    .refreshOffset(64)
    .pullToRefresh(true)
  }
}
HarmonyOS
2024-12-25 08:08:37
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
shlp
@Entry
@Component
struct RefreshPage {
  @State refresh: RefreshBean = new RefreshBean(false)

  build() {
    Column() {
      Child({ refresh: this.refresh })
    }
  }
}

@Observed
export class RefreshBean {
  isRefreshing: boolean

  constructor(isRefreshing: boolean) {
    this.isRefreshing = isRefreshing
  }

  setRefresh(refresh: boolean) {
    this.isRefreshing = refresh
  }
}


@Component
struct Child {
  @Watch("changeRefreshing")
  @ObjectLink refresh: RefreshBean
  @State arr: String[] = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '10']
  @State isRefreshing: boolean = false
  //TODO:
  //1. 如何才能让RefreshBean中isRefreshing变化后,this.isRefreshing可以感知变化
  //或者 2. Refresh组件中的refreshing参数怎么传入RefreshBean对象的isRefreshing参数
  changeRefreshing() {
    this.isRefreshing = this.refresh.isRefreshing
  }

  build() {
    Refresh({ refreshing: $$this.isRefreshing }) {
      List() {
        ForEach(this.arr, (item: string) => {
          ListItem() {
            Text('' + item + this.isRefreshing)
              .width('100%')
              .height(100)
              .fontSize(16)
              .textAlign(TextAlign.Center)
              .borderRadius(10)
              .backgroundColor(0xFFFFFF)
          }
        }, (item: string) => item)
      }
      .onScrollIndex((first: number) => {
        console.info(first.toString())
      })
      .width('100%')
      .height('100%')
      .divider({
        strokeWidth: 1,
        color: Color.Yellow,
        startMargin: 10,
        endMargin: 10
      })
      .scrollBar(BarState.Off)
    }
    .onRefreshing(() => {
      setTimeout(() => {
        //TODO:
        // this.refresh.setRefresh(false)
        this.changeRefreshing()
      }, 2000)
      console.log('onRefreshing test')
    })
    .backgroundColor(0x89CFF0)
    .refreshOffset(64)
    .pullToRefresh(true)
  }
}
分享
微博
QQ
微信
回复
2024-12-25 11:08:55
相关问题
HarmonyOS 如何在builder函数传入组件
523浏览 • 0回复 待解决
如何判断JS对象是否存在某个
2633浏览 • 1回复 待解决
HarmonyOS 如何获取form kit传入参数
298浏览 • 1回复 待解决
HarmonyOS Booleanboolean在使用上区别
168浏览 • 1回复 待解决
如何获取preference缓存
561浏览 • 1回复 待解决
HarmonyOS Refresh组件disable功能
147浏览 • 1回复 待解决
HarmonyOS .ts 代码如何遍历对象
288浏览 • 1回复 待解决