鸿蒙开发:刷新库V2装饰器适配

简介: 如果你是新写的项目,建议直接上手V2装饰器,即便是已经存在的项目,对于新的模块,也是尽量以V2为主。

前言


本文基于Api13


之前开发过一个刷新库,是基于V1版本装饰器的,可是,最近V2版本的呼声还比较高,在github上有好几个留言,本来打算月底有时间再进行适配,索性,直接提上日程。




其实打算直接在V1的版本上直接修改,发现改动量还比较大,不能为了升级V2而改造V1,再造成V1版本用户无法使用,这样下来得不偿失,索性和官方一致,也整一个V2版本出来。


如果你打算使用V2版本,直接依赖V2版本即可,除了依赖和导包不同,其它使用方式是一模一样。


中心仓库地址:https://ohpm.openharmony.cn/#/cn/detail/@abner%2Frefresh_v2


方式一:在Terminal窗口中,执行如下命令安装三方包,DevEco Studio会自动在工程的oh-package.json5中自动添加三方包依赖。

建议:在使用的模块路径下进行执行命令。

ohpm install @abner/refresh_v2


方式二:在工程的oh-package.json5中设置三方包依赖,配置示例如下:

"dependencies": { "@abner/refresh_v2": "^1.0.0"}


依赖由原来的refresh改为了refresh_v2。

V1和V2主要不同


这里的不同并不是指的刷新库不同,而是两个版本的装饰器不同,首先可以想到的是,官方开发人员肯定一开始没有设计好,而V1版本又是先入为主,在V1基础上优化,影响太大,最后就搞了一个V2版本的装饰器,和之前的进行隔离,也便于后续的维护和优化。

之前的文章中,对V2版本的装饰器也介绍了几个,确实可以发现,V2版本在V1版本之上,优化了很多,功能也强大了很多,比如@Monitor装饰器,可以直接监听某一个元素是否发生了变化,这对于针对性监听来说,是无比的便捷。

总体来说,V2版本装饰器,是将观察能力增强到数据本身,状态变量独立于UI,更改数据会触发相应视图的更新,支持对象的深度观测和深度监听,且深度观测机制不影响观测性能,也支持对象中属性级精准更新及数组中元素的最小化更新,同样,易用性高、拓展性强,在组件中明确输入与输出,有利于组件化。


V1和V2迁移对照表


V1装饰器名

V2装饰器名

说明

@Observed

@ObservedV2

表明当前对象为可观察对象。但两者能力并不相同。

@Track

@Trace

V1装饰器@Track为精确观察,不使用则无法做到类属性的精准观察。

V2@Trace装饰的属性可以被精确跟踪观察。

@Component

@ComponentV2

@Component为搭配V1状态变量使用的自定义组件装饰器。

@ComponentV2为搭配V2状态变量使用的自定义组件装饰器。

@State

无外部初始化:@Local

外部初始化一次:@Param@Once

@State和@Local类似都是数据源的概念,在不需要外部传入初始化时,可直接迁移。

@Prop

@Param

@Prop和@Param类似都是自定义组件参数的概念。

@Link

@Param@Event

@Link是框架自己封装实现的双向同步,对于V2开发者可以通过@Param@Event自己实现双向同步。

@ObjectLink

@Param

直接兼容,@ObjectLink需要被@Observed装饰的class的实例初始化,@Param没有此限制。

@Provide

@Provider

兼容。

@Consume

@Consumer

兼容。

@Watch

@Monitor

@Monitor用于监听V2状态变量的变化,搭配@Trace使用,可有深层监听的能力。状态变量在一次事件中多次变化时,仅会以最终的结果判断是否触发@Monitor监听事件。

LocalStorage

全局@ObservedV2@Trace

兼容。

AppStorage

AppStorageV2

兼容。

Environment

调用Ability接口获取系统环境变量

Environment获取环境变量能力和AppStorage耦合。在V2中可直接调用Ability接口获取系统环境变量。

PersistentStorage

PersistenceV2

PersistentStorage持久化能力和AppStorage耦合,PersistenceV2持久化能力可独立使用。


适配


其实最优解就是,V2版本和V1版本完全隔离,也就是,如果使用V2就统一使用V2,毕竟V2的功能更加强大,当然了,这里我也是建议,如果你是新的项目,或者新的功能,完全使用V2。

对于一些老的项目,已经存在了大量了V1装饰器代码,让大家一次性迁移,这个有点不符合实际,不过官方也支持混合使用的。

但是在混合使用的时候,需要注意:

1、自定义组件中不可以混用,否则编译报错,所谓混用,就是你V1自定义组件使用V2装饰器,V2自定义组件使用V1装饰器。

2、如果组件间不存在变量传递时,无论V1版本还是V2版本,均可使用不同版本的自定义组件,包括import第三方Component或者ComponentV2装饰的自定义组件。


3、组件间存在变量传递时,V1的变量传递给V2的自定义组件,有如下限制:


V1中未被装饰器装饰的变量(后称普通变量):V2只能使用@Param接收。


V1中被装饰器装饰的变量(后称状态变量):V2存在只能通过@Param装饰器接收,且仅限于boolean、number、enum、string、undefined、null这些简单类型数据。


4、组件间存在变量传递时,V2的变量传递给V1的自定义组件,有如下限制:


V2中未被装饰器装饰的变量(后称普通变量):若V1使用装饰器装饰接收的数据,只能通过@State、@Prop、@Provide。


V2中被装饰器装饰的变量(后称状态变量):若V1使用装饰器装饰接收的数据,不支持内置类型数据:Array、Set、Map、Date。


相关总结


如果你是新写的项目,建议直接上手V2装饰器,即便是已经存在的项目,对于新的模块,也是尽量以V2为主。

相关文章
|
4月前
|
移动开发 前端开发 Android开发
【02】建立各项目录和页面标准化产品-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
【02】建立各项目录和页面标准化产品-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
715 12
【02】建立各项目录和页面标准化产品-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
|
4月前
|
移动开发 JavaScript 应用服务中间件
【06】优化完善落地页样式内容-精度优化-vue加vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
【06】优化完善落地页样式内容-精度优化-vue加vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
588 5
【06】优化完善落地页样式内容-精度优化-vue加vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
|
4月前
|
移动开发 Rust JavaScript
【01】首页建立-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
【01】首页建立-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
914 4
【01】首页建立-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
|
4月前
|
移动开发 Android开发
【03】建立隐私关于等相关页面和内容-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
【03】建立隐私关于等相关页面和内容-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
267 0
|
5月前
|
存储 缓存 5G
鸿蒙 HarmonyOS NEXT端云一体化开发-云存储篇
本文介绍用户登录后获取昵称、头像的方法,包括通过云端API和AppStorage两种方式,并实现上传头像至云存储及更新用户信息。同时解决图片缓存问题,添加上传进度提示,支持自动登录判断,提升用户体验。
253 1
|
5月前
|
存储 负载均衡 数据库
鸿蒙 HarmonyOS NEXT端云一体化开发-云函数篇
本文介绍基于华为AGC的端云一体化开发流程,涵盖项目创建、云函数开通、应用配置及DevEco集成。重点讲解云函数的编写、部署、调用与传参,并涉及环境变量设置、负载均衡、重试机制与熔断策略等高阶特性,助力开发者高效构建稳定云端服务。
599 1
鸿蒙 HarmonyOS NEXT端云一体化开发-云函数篇
|
5月前
|
存储 JSON 数据建模
鸿蒙 HarmonyOS NEXT端云一体化开发-云数据库篇
云数据库采用存储区、对象类型、对象三级结构,支持灵活的数据建模与权限管理,可通过AGC平台或本地项目初始化,实现数据的增删改查及端侧高效调用。
278 1
|
5月前
|
存储 开发者 容器
鸿蒙 HarmonyOS NEXT星河版APP应用开发-ArkTS面向对象及组件化UI开发使用实例
本文介绍了ArkTS语言中的Class类、泛型、接口、模块化、自定义组件及状态管理等核心概念,并结合代码示例讲解了对象属性、构造方法、继承、静态成员、访问修饰符等内容,同时涵盖了路由管理、生命周期和Stage模型等应用开发关键知识点。
467 1
鸿蒙 HarmonyOS NEXT星河版APP应用开发-ArkTS面向对象及组件化UI开发使用实例
|
5月前
鸿蒙 HarmonyOS NEXT星河版APP应用开发-阶段三
本文介绍了UI开发中的样式复用与组件构建技术,涵盖@Extend、@Styles和@Builder的使用方法,并通过Swiper轮播、Scroll滚动、Tabs导航等常用组件实现典型界面效果,结合生肖抽卡、小米轮播、回顶按钮等案例,展示实际应用技巧。
172 1
|
5月前
|
传感器 监控 安全
HarmonyOS NEXT 5.0 的星闪(NearLink)开发应用案例
V哥分享HarmonyOS NEXT 5.0星闪开发实战,涵盖智能车钥匙无感解锁与工业传感器监控。低延迟、高可靠,代码完整,速来学习!
792 0

热门文章

最新文章