ArkUI之状态管理

状态管理

状态管理

@State

  • @State装饰器标记的变量必须初始化,不能为空值
  • @State支持Object 、class、string、number、boolean、enum 类型以及这些类型的数组
  • 嵌套类型以及数组中的对象属性无法触发视图更新

@Prop

单项同步,父组件复制一份数据传给子组件,所以 子组件修改不会传回给父组件

1
2
3
4
5
6
// 父组件
@State xxx:number=0

Child({xxx:this.xxx})
// 子组件
@Prop xxx:number
  • @Link 双向同步,传递变量引用
  • 父级 @State xxx:number=0,然后 $xxx
  • 子级 @Link xxx:number 接收
    1
    2
    3
    4
    5
    6
    // 父组件
    @State xxx:number=0

    Child({xxx:$xxx})
    // 子组件
    @Link xxx:number // 不需要初始化

Provide和Consume

跨组件传递,类似于@State和@Link。参考Vue中的Provide和Inject

1
2
3
@Provide xxx:number=0
// 不需要显示传参
@Consume xxx:number

ObjectLink和Observed

  • 用于处理嵌套对象或数组元素为对象的情况进行双向数据同步
  • 给对象添加@Observed
  • 给子组件对象属性添加@ObjectLink
    ObjectLink

ArkUI之状态管理
https://yifengtingyu.cn/2024/04/06/ArkUI之状态管理/
作者
依风听雨
发布于
2024年4月6日
许可协议