HarmonyOS ObservedV2正式使用之后,现在的Observed和一系列其他状态管理装饰器是否会弃用

HarmonyOS
1天前
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
zxjiu

在ObservedV2正式使用之后,现有的Observed装饰器和一系列其他状态管理装饰器不能与状态管理V2混合使用。具体来说,以下是不能混合使用的装饰器:@Observed、@Trace、@Component、@ComponentV2、@Local、@Param、@Once、@Event、@Monitor、@Provider、@Consumer、@StorageLink、@StorageProp、@LocalStorageLink、@LocalStorageProp、@Watch。

这些限制包括:

将V2版本的装饰器装饰的变量传递给V1版本装饰器装饰的变量。

将V1版本装饰器与V2版本装饰器混合使用 。

在V2版本装饰器装饰的自定义组件中通过V1版本装饰器装饰的变量装饰的变量 。

在V2版本装饰器装饰的自定义组件中通过V1版本装饰器装饰的变量装饰的变量。

由于新的状态管理框架采用了和现有状态管理框架不同的实现,因此不能将新的状态管理框架和现有状态管理框架混合使用,这项限制包括如下场景:

1、将新装饰器装饰的变量传递给现有装饰器装饰的变量。

2、将现有装饰器@Observed、@Track与新装饰器@ObservedV2、@Trace混合使用。

将新装饰器与现有装饰器混合使用,会出现未定义行为,表现为冗余刷新、失去深度观测能力、失去自身属性观测能力、失去属性级更新能力等。因此,不能将新的状态管理框架与现有状态管理框架混合使用。

demo及使用场景可参考以下文档:

https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/arkts-new-observedv2-and-trace-V5#%E4%BD%BF%E7%94%A8%E5%9C%BA%E6%99%AF

不能混用指的是某个组件内不能混合使用,以下是错误代码示例:

@Observed
class User {
  @Trace name: string = "Tom"; // 错误用法,编译时报错
}
分享
微博
QQ
微信
回复
1天前
相关问题
HarmonyOS @Observed装饰问题咨询
36浏览 • 1回复 待解决