鸿蒙Next状态管理装饰器V2 @Provider @Consumer
2025-06-27 22:38:48
113次阅读
0个评论
@Provider和@Consumer用于跨组件层级数据双向同步,可以使得开发者不用拘泥于组件层级
@Entry
@ComponentV2
struct test3{
@Provider() message:string='Hello World'
@Provider('msg') once_message:string='Hello World'
build() {
Column({space:20}){
Text('父布局:'+this.message).fontSize(20).fontColor(Color.Red)
Text('父布局:'+this.once_message).fontSize(20).fontColor(Color.Red)
Button('刷新').onClick(()=>{
this.message='Hello HarmonyOS '+Math.floor(Math.random() * 11)
this.once_message='Hello HarmonyOS '+Math.floor(Math.random() * 11)
})
child1()
}.width('100%')
.height('100%')
}
}
@ComponentV2
struct child1{
@Consumer() message:string ='message'
//参数名不同,没有设置别名,查找不到父布局中的Provider无法刷新
@Consumer() child_message:string ='child_message'
//定义了别名,可以通过别名查找到父布局中的Provider 参数名可以不同
@Consumer('msg') once_message:string='once_message'
@Consumer('msg') childOnceMsg:string='childOnceMsg'
build() {
Column(){
Text('子布局:'+this.message).fontSize(20)
Text('子布局:'+this.child_message).fontSize(20).fontColor(Color.Red)
Text('子布局:'+this.once_message).fontSize(20)
Text('子布局:'+this.childOnceMsg).fontSize(20)
Button('子布局刷新').onClick(()=>{
this.message='Hello'+Math.floor(Math.random() * 11)
this.once_message='Hi'+Math.floor(Math.random() * 11)
})
}
}
}
00
- 0回答
- 0粉丝
- 0关注
相关话题
- 【HarmonyOS Next】鸿蒙状态管理V2装饰器详解
- 鸿蒙Next状态管理装饰器V2 @ObservedV2@Trace@Local
- 鸿蒙Next状态管理装饰器V2 @Param@Once@Event
- 【HarmonyOS Next】鸿蒙状态管理装饰器V1和V2混用方案
- 鸿蒙-状态管理V2
- 状态管理V2
- HarmonyOS Next V2 状态管理实战
- 鸿蒙开发:刷新库V2装饰器适配
- 鸿蒙NEXT-状态管理V1和状态管理V2的差别
- 鸿蒙开发:V2版本装饰器之@Monitor装饰器
- 鸿蒙Next组件状态管理装饰器V1
- 鸿蒙开发:V2版本装饰器@Once
- 鸿蒙-状态管理V2其他方法
- HarmonyOS Next V2 状态管理@ObservedV2基本使用
- HarmonyOS Next V2 状态管理AppStorageV2和PersistenceV2