HarmonyOS 数据传递问题
有一个自定义类型的数组,需要刷新页面,数组定义在MainView里面,传给了SubView,subView用来展示数据,但是实际没有刷新成功,只有初始的时候成功了,参考了说明文档里的Prop装饰器,代码如下:
@Observed
class Data{
id:string = ''
name:string = ''
}
@Entry
@Component
struct MainView{
@State list1:Data[] = []
@State list2:Data[] = []
@State list3:Data[] = []
recode:number = 1
handler?:number
aboutToAppear(): void {
this.handler = setInterval(()=>{
if(this.list1.length == 0){
for(let i = 0; i < 4; i++){
let data1 = new Data()
data1.id = i+''
data1.name = `name${i}`
this.list1.push(data1)
let data2 = new Data()
data2.id = i+''
data2.name = `name${i}`
this.list2.push(data2)
let data3 = new Data()
data3.id = i+''
data3.name = `name${i}`
this.list3.push(data3)
}
} else {
//用下面注释的可以更新,但是我希望只改属性值,实际对象属性很多
this.list1[0].name = `new name ${this.recode}`
// let data = new Data()
// data.id = this.list1[0].id
// data.name = `new name ${this.recode}`
// this.list1[0] = data
this.recode++
}
}, 1000)
}
aboutToDisappear(): void {
clearInterval(this.handler)
}
build() {
Column(){
SubView({mList:this.list1, name:'第一个'}).width('100%').margin({top:20})
SubView({mList:this.list2, name:'第二个'}).width('100%').margin({top:20})
SubView({mList:this.list2, name:'第三个'}).width('100%').margin({top:20})
}.width('100%')
}
}
@Component
struct SubView{
@Prop mList:Data[]
@Prop name:string
build() {
Column(){
Text(this.name).fontSize(25)
GridRow({columns:2, gutter:{x:10,y:10}}){
ForEach(this.mList,(item:Data,index:number)=>{
GridCol(){
Row(){
Text(item.id).fontColor(Color.Red)
Text(item.name).fontColor(Color.Green)
}.width('100%').justifyContent(FlexAlign.SpaceEvenly)
}
})
}.margin({top:10})
.width('100%')
}.width('100%')
}
}
HarmonyOS
赞
收藏 0
回答 1
待解决
相关问题
HarmonyOS 关于Provide数据传递问题咨询
380浏览 • 1回复 待解决
HarmonyOS router.getParams()数据传递
447浏览 • 1回复 待解决
HarmonyOS taskpool数据传输问题
448浏览 • 1回复 待解决
如何在鸿蒙系统中实现基于 Intent 的数据传递?
175浏览 • 0回复 待解决
多hap调用及数据传递,有人知道吗?
998浏览 • 1回复 待解决
HarmonyOS Preferences 持久存储和 AppStorage 管理之间的数据传递最佳实践
136浏览 • 1回复 待解决
#鸿蒙通关秘籍# 如何通过CustomDialog实现页面间的数据传递?
21浏览 • 0回复 待解决
两个UIAbility之间可通过哪些方法实现数据传递
2166浏览 • 1回复 待解决
基于Camera Kit,获取相机流数据传递给native,进行压缩编码
1125浏览 • 1回复 待解决
#鸿蒙通关秘籍#使用emitter实现任务间的通信和数据传递
47浏览 • 1回复 待解决
HarmonyOS 视频流数据传输
417浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何在ZRouter中实现页面间的数据传递和返回?
113浏览 • 1回复 待解决
NFC开发,HarmonyOS设备触碰nfc标签触发操作拉起应用,并把nfc标签数据传递过来
807浏览 • 1回复 待解决
HarmonyOS @Prop 和 @Link/@ObjectLink 除了在单双向修改有区别,在数据传递上有什么区别?
373浏览 • 1回复 待解决
#鸿蒙通关秘籍# 在ArkTS中如何通过路由携带参数实现页面间的数据传递?
67浏览 • 0回复 待解决
手机如何与电脑端进行数据传输
3292浏览 • 1回复 待解决
页面关闭时如何传递数据
1947浏览 • 1回复 待解决
router传递hashmap参数问题
1556浏览 • 1回复 待解决
HarmonyOS 关于某个类默认参数的传递问题
365浏览 • 1回复 待解决
HarmonyOS oh_package.json5依赖传递问题
690浏览 • 1回复 待解决
this传递问题,该如何解决?
2168浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何利用@Sendable优化鸿蒙应用的数据传输效率
88浏览 • 1回复 待解决
ArkTS USB作为数据传输的代码示例咋没看到啊!
3043浏览 • 1回复 待解决
关于JS http请求参数的传递问题
7416浏览 • 2回复 待解决
因为Observed修饰的是Data对象而非对象数组,因此向子组件传递对象数组时无法观察数组内的Data变化并刷新UI,当前有两个解决方案:
第一种:在父组件中实现UI的forEach逻辑,子组件仅传递需要观察变化的变量。
第二种:使用API12提供的@ObservedV2和@Track装饰器(样机rom,ide和sdk需升级至beta1)
https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/arkts-new-observedv2-and-trace-V5