当前位置: 首页 > news >正文

技术支持 湖州网站建设cmseasy破解版

技术支持 湖州网站建设,cmseasy破解版,网站设计建设流程,奢侈品网站建设方案文章大纲 引言一、组件内状态装饰器State1、初始化2、使用规则3、变量的传递/访问规则说明4、支持的观察变化的场景5、State 变量的值初始化和更新机制6、State支持联合类型实例 引言 前一篇文章OpenHarmony 入门——ArkUI 自定义组件之间的状态装饰器小结(一&…

文章大纲

  • 引言
  • 一、组件内状态装饰器@State
    • 1、初始化
    • 2、使用规则
    • 3、变量的传递/访问规则说明
    • 4、支持的观察变化的场景
    • 5、@State 变量的值初始化和更新机制
    • 6、State支持联合类型实例

引言

前一篇文章OpenHarmony 入门——ArkUI 自定义组件之间的状态装饰器小结(一)简单复述了下,这一篇就好好学习下装饰器的语法和用法。

一、组件内状态装饰器@State

@State装饰的变量即状态变量,一旦变量拥有了状态属性,就可以触发其直接绑定UI组件的刷新。当状态改变时,UI会发生对应的渲染改变。**@State是最基础的,使变量拥有状态属性的装饰器,它也是大部分状态变量的数据源。**换言之,任一组件内部自己去通过数据驱动自身UI更新的,只需要把常规变量加上@State修饰即可。

1、初始化

@State装饰的变量,与声明式范式中的其他被装饰变量一样,是私有的且只能从组件内部访问,在声明时必须指定其类型和本地初始化,初始化也可选择使用命名参数机制从父组件完成初始化。@State装饰的变量生命周期与其所属自定义组件的生命周期相同。

2、使用规则

在这里插入图片描述

3、变量的传递/访问规则说明

在这里插入图片描述

4、支持的观察变化的场景

并非状态变量的所有更改都会引起UI的刷新,只有可以被框架观察到的修改才会引起UI刷新。以下的修改可被观察到以及观察到变化后触发ArkUI框架刷新UI。

  • 数据类型为boolean、string、number被修饰时可以观察到数值的变化。
  • 数据类型为class或者Object时,可以观察到自身的赋值的变化及其属性赋值的变化,即Object.keys(observedObject)返回的所有属性。
  class ClassA {public value: string;constructor(value: string) {this.value = value;}}class Model {public value: string;public name: ClassA;constructor(value: string, a: ClassA) {this.value = value;this.name = a;}}// State装饰的类型是Model
@State title: Model = new Model('Hello', new ClassA('World'));
// class类型赋值可被观察到
this.title = new Model('Hi', new ClassA('ArkUI'));
// class属性的赋值 可被观察到
this.title.value = 'Hi';// XXXXXX嵌套的属性赋值观察不到XXXXXXX
this.title.name.value = 'ArkUI';
  • 数据类型为array时,可以观察到数组本身的赋值和添加、删除、更新数组的变化
class Model {public value: number;constructor(value: number) {this.value = value;}
}
// 数组类型
@State title: Model[] = [new Model(11), new Model(1)];
// 数组赋值
this.title = [new Model(2)];
// 数组项赋值
this.title[0] = new Model(2);
// 数组项更改
this.title.pop();
// 数组项更改
this.title.push(new Model(12));
// XXXXXXXXX嵌套的属性赋值观察不到
this.title[0].value = 6;
  • 当装饰的变量是Map时,可以观察到Map整体的赋值,同时可通过调用Map的接口set, clear, delete 更新Map的值。详见装饰Map类型变量。

  • 当装饰的变量是Set时,可以观察到Set整体的赋值,同时可通过调用Set的接口add, clear, delete 更新Set的值。详见装饰Set类型变量。

  • 当装饰的对象是Date时,可以观察到Date整体的赋值,同时可通过调用Date的接口setFullYear, setMonth, setDate, setHours, setMinutes, setSeconds, setMilliseconds, setTime, setUTCFullYear, setUTCMonth, setUTCDate, setUTCHours, setUTCMinutes, setUTCSeconds, setUTCMilliseconds 更新Date的属性。

5、@State 变量的值初始化和更新机制

  • 当状态变量被改变时,查询依赖该状态变量的组件;
  • 执行依赖该状态变量的组件的更新方法,组件更新渲染;
  • 和该状态变量不相关的组件或者UI描述不会发生重新渲染,从而实现页面渲染的按需更新。

6、State支持联合类型实例

@State支持联合类型和undefined和null,在下面的示例中,count类型为number | undefined,点击Button改变count的属性或者类型,视图会随之刷新。

@Entry
@Component
struct EntryComponent {build() {Column() {MyComponent()}}
}@Component
struct MyComponent {@State count: number | undefined = 0;build() {Column() {Text(`count(${this.count})`)Button('change').onClick(() => {this.count = undefined;})}}
}

更多例子请参见后续文章。

http://www.yayakq.cn/news/606063/

相关文章:

  • 专做特卖的网站劳务派遣好还是外包好
  • 网站开发一般采用什么框架成都官方网站建设
  • 工业设计网站哪个最好哪个网站可以用来做读书笔记
  • 做百度推广 建自己的网站wordpress 主题包
  • 整站营销系统什么行业应该做网站
  • 导航类网站怎么做排名做百度网站图片怎么做
  • 广州市萝岗区做网站设计服务承德做网站公司
  • 省建设厅网站6品牌网站排名软件
  • 做网站做小程序推广惠头条自媒体平台
  • 买个域名自己做网站网站服务器部署
  • 网站的建设包括以下几个阶段房产信息查询平台
  • 宝丰网站建设工商公示网
  • 个人网站建设思路学校网站建设建议
  • js效果网站手机设计软件拉图
  • 网站开发技术 下载html自动导入wordpress
  • vs2017做网站线上推广员是干什么的兼职
  • vue 做企业网站行不wordpress主题收费破解
  • 坪山网站建设在哪里可以看免费的资源
  • 网站设计维护合同江西中赣建设有限公司网站
  • 怎么样做网站的目录结构遵义公共资源交易中心
  • 网站建设是怎么收费的做招聘网站需要人力资源许可
  • 建设网站视频站长网站大全
  • 免费发布产品网站厦门 网站建设
  • 上海软件网站建设河南省建设招投标网站
  • 手机网站 怎么开发网站地图做几个
  • 网站制作加教程视频教程微信知彼网络网站建设
  • 阜新网站建设人力外包项目发布平台
  • 郑州手机网站建设价格明细表东阳建设局网站
  • 狠狠做网站改成什么了分工做网站如何
  • 关于教做鞋的网站网络公司 网站建设 小程序