HarmonyOS 更新数据后UI不刷新
@Entry
@Component
struct NavRootPage {
@State rootData: RootData = new RootData()
aboutToAppear(): void {
this.rootData.textData = new TextData()
this.rootData.textData.text = "1"
}
build() {
Column() {
CellRoot({ cellData: this.rootData })
Button('change').onClick(() => {
setTimeout(() => {
for (let i = 0; i < 20; i++) {
this.rootData.textData!.text = `${i}`
}
})
})
}
.height('100%')
.width('100%')
}
}
@Builder
function TextCellBuilder() {
TextCell()
}
@Observed
class RootData {
builder: WrappedBuilder<[]> = wrapBuilder(TextCellBuilder)
textData?: TextData
}
@Observed
class TextData {
text?: string | Resource
}
@Component
struct CellRoot {
@Provide cellData: RootData = new RootData()
build() {
this.cellData.builder.builder()
}
}
@Component
struct TextCell {
@Consume cellData: RootData
build() {
Column() {
if (this.cellData.textData) {
TextDemo({ data: this.cellData.textData })
}
}
}
}
@Component
struct TextDemo {
@ObjectLink data: TextData
build() {
Text(this.data.text)
}
}
- 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.
component和数据包含关系:CellRoot(provide cellData) -> TextCell(consume cellData) -> TextDemo(objectLink data from cellData)
CellRoot应用在列表上,为可复用组件
在ViewModel中创建数据
rootData = new RootData()
rootData.textData = new TextData()
rootData.textData.text = "1"
- 1.
- 2.
- 3.
在处理了一些逻辑之后,手动设置
rootData.textData.text = "2"
- 1.
UI偶现不刷新,尤其是频繁触发列表刷新的时候
HarmonyOS
赞
收藏 0
回答 1
相关问题
【列表数据更新后页面不刷新】
117浏览 • 1回复 待解决
IF条件变化后UI不刷新
1231浏览 • 1回复 待解决
HarmonyOS TextPickerDialog数据源更新,UI不更新
759浏览 • 1回复 待解决
HarmonyOS UI未在数据更新时刷新
583浏览 • 1回复 待解决
HarmonyOS UI不刷新
679浏览 • 1回复 待解决
HarmonyOS IDataSource数据源刷新后,列表为不刷新
1132浏览 • 1回复 待解决
修改ForEach使用的数据对象,UI不刷新
2730浏览 • 1回复 待解决
HarmonyOS 卡片更新图片不刷新
682浏览 • 1回复 待解决
HarmonyOS 解析Json数据添加到数据源不刷新UI
1359浏览 • 2回复 待解决
HarmonyOS LIst组件UI不刷新
421浏览 • 1回复 待解决
HarmonyOS UI不刷新问题
663浏览 • 1回复 待解决
HarmonyOS @builder方法的ui不刷新
985浏览 • 1回复 待解决
列表数组中插入数据后,刷新UI的问题
837浏览 • 1回复 待解决
HarmonyOS 使用LazyForEach,数据源传不进来,UI不更新
811浏览 • 1回复 待解决
HarmonyOS 接口请求网络数据返回后,如何通知页面UI数据刷新
1174浏览 • 1回复 待解决
HarmonyOS 复杂数据类型变更,UI不刷新,该如何解决?
681浏览 • 1回复 待解决
列表里LazyForEach中多层模型嵌套,更改数据UI不刷新
846浏览 • 0回复 待解决
HarmonyOS使用@ObjectLink 数据不刷新
1268浏览 • 2回复 待解决
状态装饰器 ui不刷新的问题
2858浏览 • 1回复 待解决
HarmonyOS UI和ViewModel如何刷新数据
554浏览 • 1回复 待解决
HarmonyOS 如何触发更新自定义组件里的数据并让其刷新UI?
1979浏览 • 1回复 待解决
使用LazyForEach渲染语法渲染组件,UI不刷新。
1858浏览 • 1回复 待解决
HarmonyOS 下拉刷新的时候没有更新数据
1137浏览 • 1回复 待解决
HarmonyOS 懒加载列表更改属性UI不刷新
567浏览 • 1回复 待解决
HarmonyOS 深色模式切换后界面不刷新
799浏览 • 1回复 待解决
请尝试在 @Reusable 组件中,重新赋值上层组件传递的数据
可参考如下demo:
本demo在provide、consume、objectLink层级修改数据UI层都可以正常刷新