ArkTs 状态管理

在这里插入图片描述

@State

  • @state装饰的变量拥有器所述组件的状态,可以作为其子组件单向和双向同步的数据源,当状态数剧被修改时会自动进行相关组件的渲染刷新。
@State注意事项
  • @tate装饰的变量必须有初始数据。

@Prop

@Prop装饰的变量必须使用其父组件提供的@State变量进行初始化,@Prop装饰的变量可以和父组件建立单向同步关系,@Prop装饰的变量是可变的,但修改不会同步回父组件。

@Prop注意事项
  • 单向同步(@Prop装饰的变量是可变的,但修改不会同步回父组件)
  • 只支持 string、number、boolean、enum类型 不可以数组、any
  • 父组件是对象类型,子组件是对象属性
  • 只能父组件初始化,不允许子组件初始化(@State 装饰的变量必须有初始数据 @Prop装饰的不允许初始数据)

点击前
在这里插入图片描述
点击后在这里插入图片描述

@Link

@Link装饰的变量可以和父组件的@State变量建立双向数据绑定。任何一方所做修改都会反映给另一方,不能在组件内部进行初始化
子组件用@Link修饰在父组件中必须使用
“$” 操作符创建引用

@Link注意事项
  • 双向同步
  • 父子类型一致:string、number、boolean、enum、object、class,以及他们的数组
  • 数组中元素增删替换会引起刷新
  • 嵌套类型以及数组中的对象属性无感触发试图更新
  • 父组件传递,禁止子组件初始化

点击前
在这里插入图片描述

点击后
在这里插入图片描述

@Provide/@Consume

@Provide/@Consume:@Provide/@Consume装饰的变量用于跨组件层级(多层组件)同步状态变量,可以不需要通过参数命名机制传递,通过alias(别名)或者属性名绑定。(类似@Link 的双向同步(不用传递参数所以使用的代价是浪费资源))

@Provide/@Consume注意事项
  • 双向同步
  • 支持类型Object、class、string、number、boolean、enum类型,以及这些类型的数组。
  • 不支持any,不支持简单类型和复杂类型的联合类型,不允许使用undefined和null
  • 必须指定类型。@Provide变量的@Consume变量的类型必须相同。
  • 如果提供了别名,则必须有@Provide的变量和其有相同的别名才可以匹配成功;否则,则需要变量名相同才能匹配成功。

点击前
在这里插入图片描述

点击后
在这里插入图片描述 点击前
在这里插入图片描述 点击后
在这里插入图片描述

@Observed装饰器和@ObjectLink装饰器

在涉及嵌套对象或数组元素为对象的场景中进行双向数据同步

嵌套对象
在这里插入图片描述
数组元素为对象
在这里插入图片描述

  • 48
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值