鸿蒙开发 -- 组件级状态管理

1.@State

2.@Prop 装饰的变量不允许本地初始化,只能通过父组件向子组件传参进行初始化

// 父组件
@Entry
@Component
struct Parent {
    @state count: number = 1
    build(){
        column(){ 
            Child({ count: this.count })
        }
    }
}

// 子组件
@Component
export struct Child{
    @Prop count:number;
    build(){
        column(){
            Text(this.count.toString())
        }
    }
}

3.@Link 装饰的变量不允许本地初始化,只能由父组件通过传参进行初始化,并且父组件必须使用$变量名 的方式传参,以表示传递的是变量的引用

// 父组件
@Entry
@Component
struct Parent {
    @state count: number = 1
    build(){
        column(){ 
            Child({ count: $count })
        }
    }
}

// 子组件
@Component
struct Child{
    @Link count:number;
    build(){
        column(){
            Text(this.count.toString())
        }
    }
}

4. @Provide 装饰变量必须进行本地初始化,而 @consume 装饰的变量不允许进行本地初始化。另外,@provide和 @consume 装饰的变量不是通过父组件向子组件传参的方式进行绑定的,而是通过相同的变量名进行绑定的。

// 祖先组件
@Entry
@Component
struct GrandParent {
    @Provide count:number =1;
    build(){
        column(){
            Parent()
        }
    }
}


// 父组件
@Component
struct Parent {
    build(){
        column(){
            Child()
        }
    }
}

// 子组件
@Component
struct Child{
    @Consume count:number;
    build(){
        column(){
            Text(this.count.toString())
        }
    }
}

当 @state, @Prop,@Link,@Provide ,装饰的变量类型为数组时,可以观察到数组本身赋值的变化,和其元素的添加、删除及更新的变化,若元素类型为 clas 或者 object 时,元素属性的变化,是观察不到的

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值