状态管理 V1 和 V2 混用时,由于观察机制不同,在变量传递和装饰器使用上存在严格限制。V1 侧重于组件层级的状态管理,如 V1 若要实现深度观察能力,需通过 @ObjectLink 逐层拆解嵌套类,并配合自定义组件使用V2 在增强了对数据对象的深度观察与管理能力,可灵活地控制数据与状态,实现更高效的 UI 刷新,提升应用性能。状态管理V1和V2混用 (API19前)状态管理V1和V2混用指导(API version 19前)在 API19 之前,混用场景有相对严格的校验,状态管理 V1 与 V2 的混用规则入下V1 和 V2 的装饰器不可混用 (V1自定义组件不可使用 V2装饰器,V2自定义组件不可使用 V1装饰器,否则编译报错 )若组件间不传递变量,则 V1自定义组件中可以使用 V2自定义组件,V2 自定义组件中可以使用 V1自定义组件若组件间存在变量传递V1 向 V2 传递变量,有以下限制V1 中未被装饰器装饰的变量 (普通变量):V2 只能使用 @Param 接收V1 中被装饰器装饰的变量 (状态变量):V2 只能通过 @Param装 饰器接收,且仅限于 boolean、number、enum、string、undefined、null 这些简单类型数据V2 向 V1 传递变量,有以下限制V1 可以不使用装饰器接收数据,视为普通变量,观测不到变化V1 使用装饰器接收数据时,仅可通过 @State、@Prop、@Provide 接收数据,可以观测到变化,观测能力依赖 V1 装饰器;但不支持内置类型 (Array、Map、Set、Date) 数据,否则编译报错V1 的 @Link 只能被 V1 状态变量初始化;@ObjectLinke 只接收 @Observed 装饰的 class 初始化V1 接收 @ObservedV2 时,不能使用 V1 装饰器,但依赖 @ObservedV2+@Trace 的观测能力,其值的修改可触发 UI 刷新V1 装饰器不可与 @ObservedV2 一起使用,V2 装饰器不可与 @ObservedV1 一起使用,否则编译报错V1 向 V2 传递变量传递未被装饰的变量时,V2 只能使用 @Param 接收传递被装饰的状态变量时,V2 只能通过 @Param装 饰器接收,且仅限于 boolean、number、enum、string、undefined、null 这些简单类型数据,若传递了对象或内置类型 (Array、Map、Set、Date),会造成编译报错传递对象时,通过监听 V1 组件内的 @Observed 对象,主动将修改同步给 @ObservedV2 对象实例,其不可用 V1 装饰器装饰传递未被装饰的变量当变量未被装饰器装饰时,不具备被观测的能力。V2 组件对数据输入有严格的管理,将变量传递给 V2 时,必须通过 @Param 接收,观测能力为 @Param 能力。对于接收的 Class,@Param 装饰只可观察到对象整体的变化,若要观测属性值的变化,需通过 @ObservedV2 和 @Trace 装饰,但由于其是从 V1 传递而来,不可能有 @ObservedV2 装饰classInfo{age:number;name:string;constructor(age?:number,name?:string){this.age=age||20;this.name=name||'assassin';}}@ComponentV2struct ChildV2{// V2对数据输入有严格的管理,从父组件传入数据时,必须使用 @Param 装饰器进行数据接收@Param@Oncemessage:string="hello";// 可以观测到变化,并刷新 UI,@Once 使 @Param 装饰的变量可改变@Param@OnceundefinedVal:string|undefined=undefined;@Param@Onceinfo:Info=newInfo();// 非 @ObservedV2 对象,观测不到类属性的变化@Require@Param@Onceset:Setnumber;build(){Column({space:20}){Text('ChildV2')Button('message: '+this.message).onClick(()={// 触发 UI 刷新this.message+="_V2";})Button('undefinedVal: '+this.undefinedVal).onClick(()={// 触发 UI 刷新this.undefinedVal+="change to define";})Button(`info: {name:${this.info.name}, age:${this.info.age}`).onClick(()={// 不刷新 UIthis.info.age++;})Button(`new info: {name:${this.info.name}, age:${this.info.age}`).onClick(()={// 触发 UI 刷新this.info=newInfo(0,'V2');})ForEach(Array.from(this.set.values()),(item:number)={// 显示set变量Text(`${item}`)})}.width('100%').padding(20).backgroundColor(Color.Orange)}}@Entry@Componentexportstruct CompV1{message:string='Hello World';// 简单数据undefinedVal:undefined=undefined;// undefinedinfo:Info=newInfo();// 普通对象set:Setnumber=newSet([10,20]);// 内置类型 Setbuild(){Column({space:20}){Button('message: '+this.message).onClick(()={// message 没有装饰器,值的改变不会触发 UI 刷新this.message+='_v1'})ChildV2({message:this.message,undefinedVal:this.undefinedVal,info:this.info,set:this.set})}.width('100%')}}传递简单类型状态变量V1 向 V2 传递变量时,仅支持传递简单类型数据 (boolean、number、string、null、undefined),且 V2 组件需使用 @Param 接收参数。若传递了 V1装饰器 (如:@State) 装饰的对象或内置类型 (Array、Map、Set、Date),会造成编译报错。将上述示例中的 CompV1 组件中的变量,添加装饰器@Entry@Componentexportstruct CompV1{@Statemessage:string='Hello World';// 简单数据,支持传递@StateundefinedVal:undefined=undefined;// undefined,简单数据,支持传递@Stateinfo:Info=newInfo();// 对象,不支持传递,编译报错@Stateset:Setnumber=newSet([10,20
企业数字化 ERP 产品动态
相关推荐
Georg Hager介绍(HPC高性能计算领域专家) 文章目录一、基本背景二、核心学术贡献(HPC性能领域里程碑)1. LIKWID 工具套件(最知名成果)2. ECM 执行-缓存-内存性能模型3. HPC 性能工程方法论4. 经典教材三、研究方向四、行业影响与荣誉五、博客与社区影响力(http… · 2026/11/6 3:22:17
8. 测试-性能测试-工具简介及实战 文章目录 前言 一、工具简介 业务流程压测:JMeter 企业复杂系统:LoadRunner HTTP 极限性能:wrk 简单快速验证:ab 二、JMeter 第一部分:基础教程 🛠️ 第一步:安装适配 Java 8 的 JMeter 1. 选择正确的版本 2. 下载与解压 3. 启动验证 4. 界面汉化(可选) 🚀 第二步:… · 2026/11/7 14:00:52
电工作业分几个等级值不值得考 电工作业分几个等级值不值得考 之前考的证在外省能不能转过来?这是很多老电工最关心的问题。尤其是那些在外省打工、换工作城市、或者想跨地区就业的电工师傅,证书能不能通用直接影响着他们能不能顺利上岗。今天咱们就来聊聊 电工作业分几个等级… · 2026/11/8 8:50:06
来宾市电工证报名多久拿证?学历不高也能考的实操指南 来宾市电工证报名多久拿证?学历不高也能考的实操指南 你是不是也觉得学历不高,考电工证怕被拒?别担心,我来告诉你,现在考来宾市电工证报名, 多久拿证 根本不难,关键是你怎么准备。… · 2026/11/8 8:50:06
初中毕业也能考高压电工作业证和职称?考前押题帮你搞定 初中毕业也能考高压电工作业证和职称?考前押题帮你搞定 你是不是也担心自己学历不够,连高压电工作业证都考不了?别急,我来给你说说怎么操作。今天我就用南阳一个真实案例,给你讲讲怎么用考前押题搞定高压电工作业证和职称,让你也能拿到手。… · 2026/11/8 8:50:06
电工证哪个种类分等级上岗必备怎么选 电工证哪个种类分等级上岗必备怎么选 你怕学历不高报不上名?电工证哪个种类分等级?别慌,这篇文章能帮你理清思路,选对证,稳稳上岗。 一、电工证哪个种类分等级?别被“等级”绕晕了… · 2026/11/8 8:50:06
电工证丢失还能补吗?千万别踩坑,丢了证等于失业 电工证丢失还能补吗?千万别踩坑,丢了证等于失业 你正在找工作,但手里的电工证突然丢了,这下怎么办?别急,先别慌, 电工证丢失还能补吗 ?答案是肯定的,但 千万别踩坑 ,补办流程如果不了解,可能会耽误你上岗、甚至影响到你的收入。… · 2026/11/8 0:00:20
电力电缆作业证直播报名入口与办理流程良心建议 电力电缆作业证直播报名入口与办理流程良心建议 你是不是也担心学历不高报不了名?别急,今天就给你讲讲 电力电缆作业证直播 的报名流程和那些你必须知道的干货, 良心建议 在这里,别错过。 电力电缆作业证直播报名需要什么条件?… · 2026/11/8 0:00:20
英德电工证报考费多少钱,怕考不过白交培训费?看完这篇别再踩坑 英德电工证报考费多少钱,怕考不过白交培训费?看完这篇别再踩坑 怕考不过白交培训费?英德电工证报考费多少钱,你真的了解吗?现在市面上培训机构五花八门,价格参差不齐,很多人一不小心就花了冤枉钱,结果还考不过。别急,今天就来给你说清楚英德电工证的… · 2026/11/8 0:00:20
电工证丢失还能补吗?千万别踩坑,丢了证等于失业 电工证丢失还能补吗?千万别踩坑,丢了证等于失业 你正在找工作,但手里的电工证突然丢了,这下怎么办?别急,先别慌, 电工证丢失还能补吗 ?答案是肯定的,但 千万别踩坑 ,补办流程如果不了解,可能会耽误你上岗、甚至影响到你的收入。… · 2026/11/8 0:00:20
电力电缆作业证直播报名入口与办理流程良心建议 电力电缆作业证直播报名入口与办理流程良心建议 你是不是也担心学历不高报不了名?别急,今天就给你讲讲 电力电缆作业证直播 的报名流程和那些你必须知道的干货, 良心建议 在这里,别错过。 电力电缆作业证直播报名需要什么条件?… · 2026/11/8 0:00:20
英德电工证报考费多少钱,怕考不过白交培训费?看完这篇别再踩坑 英德电工证报考费多少钱,怕考不过白交培训费?看完这篇别再踩坑 怕考不过白交培训费?英德电工证报考费多少钱,你真的了解吗?现在市面上培训机构五花八门,价格参差不齐,很多人一不小心就花了冤枉钱,结果还考不过。别急,今天就来给你说清楚英德电工证的… · 2026/11/8 0:00:20
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/7 11:25:08
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/7 12:02:18
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/8 1:18:25