1、定义
在鸿蒙系统的官方语言ArkTS中,有一套类似于发布者和订阅的模式,使用@Provide、@Consume两个装饰器来实现。
@Provide、@Consume:@Provide/@Consume装饰的变量用于跨组件层级(多层组件)同步状态变量,可以不需要通过参数命名机制传递,通过alias(别名)或者属性名绑定。
2、逐级传递的困境
从父—>子—>孙三级传递,甚至以后复杂的项目需要几十级的传递,都需要通过一个多余被Link修饰的变量进行传递,太过复杂。如下面的案例:
@Entry
@Component
struct ProviderC {
@State message: string = '沧海'
build() {
Row() {
Column() {
Text(this.message).textSty(50)
.onClick(()=>{
//点击文字,在‘沧海’和‘扁舟’之间进行切换
this.message= this.message==='沧海' ? '扁舟' : '沧海'
})
//调用子组件
ProviderC_Son({
message_S:$message })