建设网上银行官网/网站排名优化培训

建设网上银行官网,网站排名优化培训,一个人可以做多少网站,电商网站建设模型图一、ArkTS状态变量的定义: State:状态,指驱动UI更新的数据。用户通过触发组件的事件方法,改变状态数据。状态数据的改变,引起UI的重新渲染。 在鸿蒙原生开发中,使用ArkTS开发UI的时候,我们可以…

一、ArkTS状态变量的定义:


  • State:状态,指驱动UI更新的数据。用户通过触发组件的事件方法,改变状态数据。状态数据的改变,引起UI的重新渲染。


在鸿蒙原生开发中,使用ArkTS开发UI的时候,我们可以对UI进行状态变量的绑定,来进行UI渲染



基本结构如下:


@Component
struct MyComponent {
@State count: number = 0;
private increaseBy: number = 1;

build() {
}
}

@Entry
@Component
struct Parent {
build() {
Column() {
// 从父组件初始化,覆盖本地定义的默认值
MyComponent({ count: 1, increaseBy: 2 })
}
}
}

@State count: number = 0;//通过@State修饰绑定的变量会被UI监听,count发生变化时UI也会随之变化。


这是V1的状态管理方法。


下面我们来介绍V2状态管理


首先我们来看V2的状态修饰器:


  • @ObservedV2装饰器和@Trace装饰器:类属性变化观测
  • @ComponentV2装饰器:自定义组件
  • @Local装饰器:组件内部状态
  • @Param:组件外部输入
  • @Once:初始化同步一次
  • @Event装饰器:规范组件输出
  • @Provider装饰器和@Consumer装饰器:跨组件层级双向同步
  • @Monitor装饰器:状态变量修改监听
  • @Computed装饰器:计算属性
  • @Type装饰器:标记类属性的类型


@ObservedV2装饰器与@Trace装饰器



  • @ObservedV2装饰器与@Trace装饰器需要配合使用,单独使用@ObservedV2装饰器或@Trace装饰器没有任何作用。
  • 被@Trace装饰器装饰的属性property变化时,仅会通知property关联的组件进行刷新。
  • 在嵌套类中,嵌套类中的属性property被@Trace装饰且嵌套类被@ObservedV2装饰时,才具有触发UI刷新的能力。
  • 在继承类中,父类或子类中的属性property被@Trace装饰且该property所在类被@ObservedV2装饰时,才具有触发UI刷新的能力。
  • 未被@Trace装饰的属性用在UI中无法感知到变化,也无法触发UI刷新。
  • @ObservedV2的类实例目前不支持使用JSON.stringify进行序列化。

@ComponentV2装饰器用于装饰自定义组件:


  • 在@ComponentV2装饰的自定义组件中,开发者仅可以使用全新的状态变量装饰器,包括@Local、@Param、@Once、@Event、@Provider、@Consumer等。

  • @ComponentV2装饰的自定义组件暂不支持组件复用、LocalStorage等现有自定义组件的能力。

  • 无法同时使用@ComponentV2与@Component装饰同一个struct结构。

  • @ComponentV2支持一个可选的boolean类型参数freezeWhenInactive,来实现组件冻结功能。


@ComponentV2 // 装饰器
struct Index { // struct声明的数据结构
build() { // build定义的UI
}
}


通过以上状态变量的修饰,可以弥补状态管理(V1)的短板,状态管理(V1)在复杂数据类型和隔代数据同步方面可能没有状态管理(V2)更好用,所以我们大型复杂数据结构的项目可以使用状态管理(V2),在日常普通项目中使用状态管理(V1)更方便。



最后我们来看看MVVM模式的状态管理V2项目框架设计



一般鸿蒙项目的开发使用MVVM模式;ArkUI采用了Model-View-ViewModel(MVVM)架构模式,


MVVM将应用分为Model、View和ViewModel三个核心部分,实现数据、视图与逻辑的分离。通过这种模式,UI可以随着状态的变化自动更新,无需手动处理,从而更加高效地管理数据和视图的绑定与更新。


  • Model:负责存储和管理应用的数据以及业务逻辑,不直接与用户界面交互。通常从后端接口获取数据,是应用程序的数据基础,确保数据的一致性和完整性。
  • View:负责用户界面展示数据并与用户交互,不包含任何业务逻辑。它通过绑定ViewModel层提供的数据来动态更新UI。
  • ViewModel:负责管理UI状态和交互逻辑。作为连接Model和View的桥梁,ViewModel监控Model数据的变化,通知View更新UI,同时处理用户交互事件并转换为数据操作。

常用的状态管理装饰器包括@Local、@Param、@Event、@ObservedV2、@Trace


来看这段代码:


@ObservedV2
export default class TaskListTeamBean {
@Type(TeamBean)
@Trace login: TeamBean[] = [new TeamBean()];
@Type(TeamBean)
@Trace bill: TeamBean[] = [new TeamBean()];
@Type(TeamBean)
@Trace community: TeamBean[] = [new TeamBean()];
@Type(TeamBean)
@Trace game: TeamBean[] = [new TeamBean()];
@Type(TeamBean)
@Trace person: TeamBean[] = [new TeamBean()];

async loadTasks(context: common.UIAbilityContext) {
let taskList = new ListTeamBean(new WholeBean());
await taskList.loadTasks(context);
this.login = taskList.taskWhole.login
this.bill = taskList.taskWhole.bill
this.community = taskList.taskWhole.community
this.game = taskList.taskWhole.game
this.person = taskList.taskWhole.person
}


addTask(newTask: TaskTeamBean): void {

}

removeTask(removedTask: TaskTeamBean): void {

}
}

@Local taskList: TaskListTeamBean = PersistenceV2.connect(TaskListTeamBean, 'TaskList', () => new TaskListTeamBean())!;

private context = getContext(this) as common.UIAbilityContext;


async aboutToAppear() {
this.taskList = PersistenceV2.connect(TaskListTeamBean, 'TaskList', () => new TaskListTeamBean())!;
if (this.taskList.community.length < 2) {
await this.taskList.loadTasks(this.context);
}
}

通过


  1. @ComponentV2修饰TaskListTeamBean数据对象
  2. 在TaskListTeamBean内部使用@Type()@Trace来修饰变量
  3. 然后再在@Entry入口页面调用:

这就是MVVM模式+状态管理V2的基本框架开发模式。


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/76064.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

深度学习 Deep Learning 第12章 深度学习的主流应用

深度学习 Deep Learning 第12章 深度学习的主流应用 内容概要 本周深入探讨了深度学习在多个领域的应用&#xff0c;包括计算机视觉、语音识别、自然语言处理以及其他领域如推荐系统和知识表示。本章强调了硬件和软件基础设施的重要性&#xff0c;特别是GPU在加速神经网络训练…

mysqlworkbench导入.sql文件

1、MySQL Workbench 新建数据库 或者 在左侧导航栏的 ​Schemas 区域右键选择 ​Create Schema...输入数据库名称&#xff08;例如 mydatabase&#xff09;&#xff0c;点击 ​Apply确认创建&#xff0c;点击 ​Finish 2、选择目标数据库 在左侧导航栏的 ​Schemas 列表中&a…

《Spring Cloud Eureka 高可用集群实战:从零构建高可靠性的微服务注册中心》

从零构建高可用 Eureka 集群 | Spring Cloud 微服务架构深度实践指南 本文核心内容基于《Spring Cloud 微服务架构开发》第1版整理&#xff0c;结合生产级实践经验优化 实验环境&#xff1a;IntelliJ IDEA 2024 | JDK 1.8| Spring Boot 2.1.7.RELEASE | Spring Cloud Greenwich…

Redis设计与实现-哨兵

哨兵模式 1、启动并初始化sentinel1.1 初始化服务器1.2 使用Sentinel代码1.3 初始化sentinel状态1.4 初始化sentinel状态的master属性1.5 创建连向主服务器的网络连接 2、获取主服务器信息3、获取从服务器的信息4、向主从服务器发送信息5、接受主从服务器的频道信息6、检测主观…

【大前端系列20】JavaScript核心:项目实战从零构建任务管理系统

JavaScript核心&#xff1a;项目实战从零构建任务管理系统 系列: 「全栈进化&#xff1a;大前端开发完全指南」系列第20篇 核心: 将JavaScript异步编程、事件循环等核心知识应用于实际项目开发 &#x1f4cc; 引言 在前面的文章中&#xff0c;我们深入探讨了JavaScript中的异步…

STM32单片机的桌面宠物机器人(基于HAL库)

效果 基于STM32单片机的桌面宠物机器人 概要 语音模块&#xff1a;ASR PRO&#xff0c;通过天问block软件烧录语音指令 主控芯片&#xff1a;STM32F103C8T6 使用HAL库 屏幕&#xff1a;0.96寸OLED屏&#xff0c;用来显示表情 4个舵机&#xff0c;用来当作四只腿 底部一个面…

计算机视觉初步(环境搭建)

1.anaconda 建议安装在D盘&#xff0c;官网正常安装即可&#xff0c;一般可以安装windows版本 安装成功后&#xff0c;可以在电脑应用里找到&#xff1a; 2.创建虚拟环境 打开anaconda prompt&#xff0c; 可以用conda env list 查看现有的环境&#xff0c;一般打开默认bas…

全局思维与系统思考

最近接到一些需求&#xff0c;1号位希望每个层级的领导者有眼界&#xff0c;胸怀&#xff0c;格局&#xff0c;全局观&#xff0c;这些听起来似乎很抽象&#xff0c;然而它们是每个人、每个团队成长与成功的核心竞争力。那么&#xff0c;如何才能提升这些能力&#xff1f;就像我…

天锐蓝盾终端安全防护——企业终端设备安全管控

从办公室的台式电脑到员工手中的移动终端&#xff0c;这些设备不仅是工作的得力助手&#xff0c;更是企业数据的重要载体。然而&#xff0c;随着终端设备的广泛使用&#xff0c;安全风险也如影随形。硬件设备使用不当、数据随意传输等问题频发&#xff0c;使得企业数据面临着泄…

k8s网络策略

k8s网络策略 k8s网络测试概述查看防火墙策略 k8s网络策略网络访问控制案例&#xff1a;配置k8s网络策略结果验证 k8s网络策略配置示例 k8s网络测试概述 网络策略就是设置防火墙 查看防火墙策略 # 获取当前命名空间下的所有 NetworkPolicy 资源&#xff08;网络策略&#xff0…

leetcode刷题日记——跳跃游戏 II

[ 题目描述 ]&#xff1a; [ 思路 ]&#xff1a; 题目要求在一个一定能达到数组末尾的跳跃数组中(见55题 跳跃游戏)&#xff0c;找出能够跳到末尾的最小次数要求次数最少&#xff0c;那肯定是选取能选步数中最大的数。也就是在当前能够达到的距离中&#xff0c;选择能够达到的…

【Java SE】Java比较器:Comparable、Comparator

目录 1.前言 2.Comaprable接口 2.1 使用细节 2.2 案例演示 3.Comparator接口 3.1 为什么需要Comparator接口 3.2 使用细节 3.3 案例演示 4.Comparable、Comparator对比 1.前言 Java 中的对象&#xff0c;正常情况下&#xff0c;只能进行比较&#xff1a; 或 ! 。不…

(二)创建实例

在这节中&#xff0c; 创建一个实例初始化Vulkan库,指定驱动程序需要使用的应用程序信息 1&#xff0c;要有个实例句柄 VkInstance instance; 2&#xff0c;设置创建Vulkan驱动程序需要的信息&#xff0c; VkInstanceCreateInfo createInfo {}; createInfo.sType VK_STRUCTUR…

高效内存管理:x86-64架构中的分页机制

在 x86-64 架构的世界里&#xff0c;内存分页机制扮演着举足轻重的角色&#xff0c;它就像是一座桥梁&#xff0c;连接着虚拟地址与物理地址。简单来说&#xff0c;内存分页机制就是将线性地址&#xff08;也就是虚拟地址&#xff09;切分成一个个固定大小的页&#xff0c;并把…

23_js面向对象

上次我们讲运动函数&#xff0c;实际开发不会写运动函数。只是讲一下思想。 现在讲一下用原生js去实现轮播图&#xff0c;引入到对象 首先&#xff0c;要明确 面向对象不是语法&#xff0c;是一个思想&#xff0c;是一种编程模式 面向&#xff1a;朝向 面向对象&#xff1a…

torch不能使用cuda的解决方案

遇到了这样的报错&#xff0c;说明 torch不能使用cuda 反思 我频繁地尝试安装不同的 nvdia 驱动&#xff0c;浪费了很多时间。因为我的错误地认为nvidia会自带cuda&#xff0c;其实cuda需要单独安装。 还有我的torch是cpu版本的&#xff0c;即使nvidia cuda安装了&#xff0…

kettle从入门到精通 第九十三课 ETL之kettle kettle 调用web service接口5种方法,一文彻底搞懂

场景&#xff1a;群里有小伙伴向我求助如何调用web service接口&#xff0c;趁着周末时间&#xff0c;给兄弟们搞demo。 1、本次使用的web service服务接口地址是http://ws.webxml.com.cn/WebServices/WeatherWS.asmx?opgetSupportCityDataset&#xff0c; 此接口根据用户输入…

蓝桥杯 14 天 十五届蓝桥杯 数字诗意

static boolean kkk(long x) {if(x1)return true;else {// 初始化xx为1&#xff0c;用于计算2的幂long xx 1;// 循环60次&#xff0c;检查2的幂是否等于xfor (int i 1; i < 60; i) {xx * 2; // 每次将xx乘以2if (xx x) { // 如果xx等于x&#xff0c;说明x是2的幂&#xf…

异常与捕获

1.C 异常概念 异常是一种处理错误的方式&#xff0c;当一个函数发现自己无法处理的错误时就可以抛出异常&#xff0c;让函数的直接或间接的调用者处理这个错误。 throw&#xff1a;当问题出现时&#xff0c;程序会抛出一个异常。这是通过使用 throw 关键字来完成的。catch&am…

Linux进程状态补充(10)

文章目录 前言一、阻塞二、挂起三、运行R四、休眠D五、四个重要概念总结 前言 上篇内容大家看的云里雾里&#xff0c;这实在是正常不过&#xff0c;因为例如 写实拷贝 等一些概念的深层原理我还没有讲解&#xff0c;大家不用紧张&#xff0c;我们继续往下学习就行&#xff01;&…