HarmonyOS 鸿蒙Next Refresh中onOffsetChange,将偏移赋值给@state refreshOffset:number,一切正常,赋值给 class中的 refreshOffset,概率不显示下拉刷新logo

HarmonyOS 鸿蒙Next Refresh中onOffsetChange,将偏移赋值给@state refreshOffset:number,一切正常,赋值给 class中的 refreshOffset,概率不显示下拉刷新logo 情况1:可用

@State refreshOffset: number = 0  // 刷新位移
Refresh({ refreshing: $$this.isRefreshing, builder: refreshLoadingAnimation() }) {
  this.content()
}
.onOffsetChange((value: number) => {
  this.refreshOffset = value
})

情况2:不出现logo

不断打印Lottie canvas size:25,65

export class BarData {
  refreshOffset: number = 0
}
@State barData: BarData = new BarData()
Refresh({ refreshing: $$this.isRefreshing, builder: refreshLoadingAnimation() }) {
  this.content()
}
.onOffsetChange((value: number) => {
  this.barData.refreshOffset = value
})

更多关于HarmonyOS 鸿蒙Next Refresh中onOffsetChange,将偏移赋值给@state refreshOffset:number,一切正常,赋值给 class中的 refreshOffset,概率不显示下拉刷新logo的实战教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复

对于嵌套的状态检测,不建议用@state,要使用observed-and-objectlink

更多关于HarmonyOS 鸿蒙Next Refresh中onOffsetChange,将偏移赋值给@state refreshOffset:number,一切正常,赋值给 class中的 refreshOffset,概率不显示下拉刷新logo的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS中,onOffsetChange回调函数用于监听下拉刷新的偏移量变化。当将偏移量赋值给@state修饰的refreshOffset变量时,UI能够正常响应并显示下拉刷新logo。然而,当将偏移量赋值给class中的refreshOffset变量时,可能出现下拉刷新logo不显示的情况。

这种现象的原因在于@state修饰的变量会自动触发UI更新,而class中的普通变量则不会。@state是鸿蒙系统的响应式状态管理机制,当@state修饰的变量值发生变化时,系统会自动重新渲染依赖该变量的UI组件。而class中的普通变量不具备这种响应式特性,即使其值发生变化,UI也不会自动更新。

因此,若希望UI能够根据偏移量的变化实时更新,建议使用@state修饰的变量来存储偏移量。若必须使用class中的变量,则需手动触发UI更新,例如通过调用this.requestUpdate()方法。

回到顶部