@Provide和@Consume用法(父组件使用@Provide包裹数据类型,后代组件使用@Consume接收(参数名要一致),此时后代组件修改该值时,无论是复杂还是简单数据类型,父组件和后代组件)

// 父组件使用@Provide包裹数据类型,后代组件使用@Consume接收(参数名要一致),此时后代组件修改该值时,无论是复杂还是简单数据类型,父组件和后代组件使用到的这个数据都会发生变化

@Component 
struct MyGrandSonComponent {  
    @Consume theme: ThemeObj   
    build() {  
        Column() {  
            Text(JSON.stringify(this.theme))  
            Text('MyGrandSonComponent').onClick(() => {  this.theme.name = `${Math.random()}我膨胀了!!!`  })  
        }  
    } 
}  


@Component 
struct MyComponent {  
    @Consume theme: ThemeObj   
    
    build() {  
        Column() {  
            Text(JSON.stringify(this.theme))  
            MyGrandSonComponent()  
        }.width(300).height(100).backgroundColor(Color.Gray)              
    } 
}  



interface ThemeObj {  
    name: string  
    id: number 
}  

@Entry 
@Component 
struct Index {  
    @Provide theme: ThemeObj = {  name: '主题',  id:1  }   
    build() {  
        Column() {  
            Text(JSON.stringify(this.theme))  
            MyComponent()  
        }
    } 
}






  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值