鸿蒙学习笔记
第八节 @Provide学习
虽然单向和双向通信已经能够解决几乎所有的问题,
但是多级组件之间还是太麻烦了,因此推出了@Provide
与@Consume
简单的来说就是我们在某个组件的某个变量中定义了一个这样的标记
如 : @Provide('com.lol.wf')edg : string = '冠军'
然后在另外一个组件中的某个变量定义了一个这样子的标记,且不能有初值
如 : @Consume('com.lol.wf')skt;
此时@Provide定义的变量一定要先调用,此时他们任何一方改变,双方都能改变
@Entry
@Component
struct ProvideStudy {
@State tes:string = 'test'
@Provide('com.qing.provide') message: string = 'Hello QingYe'
build() {
Row() {
Column() {
Text(this.message)
.provideTextStyle()
.onClick(()=>{
this.message = "Zs"
})
Divider()
ProvideParent()
}
.width('100%')
}
.height('100%')
}
}
@Component
struct ProvideParent{
build(){
Column(){
Text("parent").provideTextStyle()
Divider()
ProvideSon()
}
}
}
@Component
struct ProvideSon{
@Consume('com.qing.provide') info : string
build(){
Column(){
Text(this.info)
.provideTextStyle()
.onClick(()=>{
this.info = "请个牛逼"
})
Divider()
}
}
}
@Extend(Text) function provideTextStyle() {
.fontSize(50)
.fontWeight(FontWeight.Bold)
}