HarmonyOS Next V2 状态管理 @ObservedV2 基本使用
HarmonyOS Next V2 状态管理 @ObservedV2 基本使用
背景
最近 Harmony 应用开发技术中推出了新版的状态管理技术,试用过后,直呼很香。我们来看为什么?
因为在 Harmony 应用开发过程中,我们一定会碰到监听嵌套类/深层次属性的需求,如希望 son 的 weight 属性变化后,可以引起 UI 刷新。
@Observed 装饰器和**@ObjectLink**装饰器
针对以上需求,那之前,也就是所谓的 v1 版本是怎么做的呢? 是通过 @Observed 装饰器和**@ObjectLink**装饰器实现的。
其中,这一套解决方案有一个很严重的、破坏性的问题- 必须搭配自定义组件一起使用。
所以,你代码本来是这样子的 🤓:
为了实现深层次数据的监听,必须改造-破坏你的 UI 结构,要引入自定义组件,那么就变成了这样子 😭:
大家看看,这个代码的风格,是人干的事情吗
接下来,我们看看更新后的技术解决方案是怎么样的 👇👇👇👇
@ObservedV2 装饰器和 @Trace 装饰器
截至 2024 年 7 月 15 日 v2 都是试用版
介绍
为了增强状态管理框架对类对象中属性的观测能力,开发者可以使用**@ObservedV2**装饰器和 @Trace 装饰器装饰类以及类中的属性。
其中,官网上的表达如下:
@ObservedV2 装饰器与 @Trace 装饰器需要配合使用,单独使用 @ObservedV2 装饰器 @Trace 装饰器没有任何作用。
被 @Trace 装饰器装饰的属性 property 变化时,仅会通知 property 关联的组件进行刷新。
在嵌套类中,嵌套类中的属性 property 被 @Trace 装饰且嵌套类被 @ObservedV2 装饰时,才具有触发 UI 刷新的能力。
在继承类中,父类或子类中的属性 property 被 @Trace 装饰且该 property 所在类被 @ObservedV2 装饰时,才具有触发 UI 刷新的能力。
未被 @Trace 装饰的属性用在 UI 中无法感知到变化,也无法触发 UI 刷新。
@ObservedV2 的类实例目前不支持使用 JSON.stringify 进行序列化。
我们针对以上总结一下。使用的技巧也很简单
要监听的属性要添加 @Trace 装饰器
被监听的属性 所在的类要添加 @ObservedV2
继承类 ,继承其中的被监听的属性时,可以等价视为是给出自己的类添加了 @Trace 装饰器监听。
是不要对比 @Observed 装饰器和**@ObjectLink** 要简单轻松多了?
总结
当我们在开发中,如果碰到了监听深层次属性的需求,可以使用 @Observed 装饰器和 @ObjectLink 装饰器 和 @ObservedV2 装饰器和 @Trace 装饰器
@Observed 装饰器和 @ObjectLink 装饰器 是比较稳定的技术,但是开发效率低,体验不好,对代码具有入侵型
@ObservedV2 装饰器和 @Trace 装饰器是新推出的 v2 的版本,目前还在试用期,大概率会成为稳定版。对代码比较友好,如果是新的业务,可以优先考虑使用它。
版权声明: 本文为 InfoQ 作者【万少】的原创文章。
原文链接:【http://xie.infoq.cn/article/1a8230b9c3cbc9bee067a5f43】。文章转载请联系作者。
评论