完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
1、OpenHarmony ETS开发状态管理解读
鸿蒙状态管理简介 首先引用开发文档中的图片,图片中已经基本可以看出整个应用中的数据流动,非常全面 华为鸿蒙开发文档对于应用中状态的管理提供了丰富且全面的接口(仅提供通俗理解,具体定义见文档): @State:用于定义应用管理的状态,更像是React16.8之后的useState,方便代码根据业务划分逻辑,状态定义仅支持class、number、boolean、string 及其组成的数组,并不允许object和any @Props:单项数据流,父组件传递子组件,直接使用this.属性名向下传递数据,子组件使用此修饰器接收,推荐用于只渲染的数据用此定义 @Link:双向数据流,解决了vue中**emit**函数的功能,父组件用emit∗∗函数的功能,父组件用向下传递数据,子组件使用此修饰器接收,推荐需要在子组件中修改父组件状态的情况(即为类似于在vue中需要使用$emit)下使用 @Consume和**@Provide**: 其中provide是生产者,consume是消费者,写过react的开发者应该对此很熟悉,类似于react中的context上下文,这一对修饰器主要实现的是上层组件跨多层传值给下层组件,并实现双向绑定数据 @Observed和**@ObjectLink**:其中@Observed用于修饰类,@ObjectLink用于在子组件中修饰已经被@Observed修饰的类对应的状态(具体用法见下文),这一对修饰器主要解决的问题是,如果定义了一个包含多个对象(类)的数组,其中对象的属性发生变化,能够被应用监测到并更新视图 @Watch:在某一可被应用监测的状态发生修改的时候,执行某个额外的动作 AppStorage: 应用程序中的单例对象,由UI框架在应用程序启动时创建,在应用程序退出时销毁,为应用程序范围内的可变状态属性提供中央存储,简单来说就类似于vuex/redux 上述几个状态管理的修饰器,更多的是在同一个page中去使用,根据业务/页面逻辑划分组件,实现状态管理,父子组件传值,跨组件传值等 而AppStorage是在多页面(page文件夹下有多个@Enter定义页面)应用程序中用于跨页面共享数据。 建议AppStorage的使用在有@Enter的组件中使用,其中的数据在组件树中从顶部注入,对子组件来说只是一个父组件传递过来的状态,保证子组件的职能单一,输入输出稳定,与外部数据解耦,保证复用性 梦开始的地方(Typescript而非anyscript) 本文主要是对于复杂数据类型class的使用解读,对于number/boolean/string暂不做解读,请自行尝试 一切都是从class开始的:@State定义中明确表示只能class、number、boolean、string 及其组成的数组,并不允许object和any,所以对于复杂数据类型的定义就需要用到class,如下图 定义接口 使用接口定义复杂数据(此处例子可以看出,用**new Month( )或者直接{ }**都是可以的)
OpenHarmony ETS开发状态管理解读.pdf
(681.54 KB, 下载次数: 1
)
2、OpenHarmony ETS状态变量装饰器 三种状态变量装饰器的异同点 这三种装饰器都有各自的特点,主要总结如下: 相同点:只能在组件内使用。 异同点:1)@Prop只支持基本类型number,string,boolean( 注意点:必须小写 ), @State和**@Link除了支持上述的类型外,还支持上述类型的数组,但是不支持复杂类型object和any( 注意点:官网介绍的不支持,但是实际用是可以支持的( 除了@State**的number类型 ),如下图1); 图1 2)@State组件内不同实例的状态数据是独立的( 如下图2 ); 图2 3)初始化数据方式不同,@State可以在自己的组件内初始化,也可以为自定义的组件提供传值的方式进行初始化;@Prop和**@Link初始化则是父组件里面@State**定义的变量( 注意点:不能在组件内部初始化,只能定义类型(如下图3); 图3 4)@Prop是单向,内部修改不会更新父组件如下图3);@Link则是双向,会通知父组件**@State**变量(如下图4)。
OpenHarmony ETS状态变量装饰器.pdf
(220.17 KB, 下载次数: 1
)
|
|
相关推荐
|
|
2024 OpenHarmony年度威廉希尔官方网站 分享会来啦,预约直播有好礼~
1094 浏览 0 评论
掰掉卫星电话的外置天线,华为“天才少年”助力 Mate 捅破天
6182 浏览 0 评论
1218 浏览 2 评论
华秋电子 | 电子发烧友亮相OpenHarmony人才生态大会2024
2336 浏览 0 评论
OpenHarmony有 支持的分布式数据库吗? 自动同步各节点数据?
1662 浏览 0 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-28 12:54 , Processed in 0.587161 second(s), Total 35, Slave 26 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号