鸿蒙前端开发4-ArkTS语言状态管理

news/2024/10/4 19:32:43

1.运行时状态变化带来的UI的重新渲染,在ArkTS统称为状态管理机制

2.状态变量:被状态装饰器装饰的变量,状态变量值的改变会引起UI的渲染更新。状态state和ui/view的关系

  

  View(ui):UI渲染指build方法内的UI描述和@Build装饰器的方法内的UI描述映射到界面

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

3.常规变量:没有被状态装饰器装饰的变量,通常应用于辅助计算。它的改变永远不会引起UI的刷新

4.数据源/同步源:状态变量的原始来源,可以同步给不同的状态数据。通常意义为父组件传给子组件的数据

5.命名参数机制:父组件通过指定参数传递给子组件的状态变量,为父子传递同步参数的主要手段

6.从父组件初始化:父组件使用命名参数机制,将指定参数传递给子组件。子组件初始化的默认值在有父组件传值的情况下,会被覆盖

7.初始化子节点:父组件中状态变量可以传递给子组件,初始化子组件对应的状态变量

8.本地初始化:在变量声明的时候赋值,作为变量的默认值

9.装饰器

  

  上图中,Components部分的装饰器为组件级别的状态管理,Application部分为应用的状态管理。开发者可以通过@StorageLink/@LocalStorageLink实现应用和组件状态的双向同步,通过@StorageProp/@LocalStorageProp实现应用和组件状态的单向同步

  a.组件级别的状态管理

    @State:@State装饰的变量拥有其所属组件的状态,可作为其子组件单向和双向的数据源,当其数值改变时,会引起相关组件的渲染刷新

      

 

    @Preop:@Prop装饰器的变量可以和父组件建立起单向数据同步,@Prop装饰的变量是可变的,但修改不会同步回父组件

    @Link:@Link装饰的变量和父组件构建双向同步关系的状态变量,父组件接受来自@Link装饰的变量的修改同步,父组件更新也会同步给@Link装饰的变量

    @Provide/@Consume:@Provide/@Consume装饰的变量用于跨组件层级(多层级)同步状态变量,可以不需要通过参数命名机制传递,通过alias别名或者属性绑定

    @Observed:@Observed装饰class,需要观察多层嵌套场景的class需要被@Observed装饰,单独使用@Observed没有任何作用,需要和@ObjectLink和@Prop连用

    @ObjectLink:@ObjectLink装饰的变量接收@Observed装饰的class实例,应用于观察多层嵌套场景,和父组件的数据源构成双向数据同步

  b.应用级别状态管理

    AppStorage是应用程序中的一个特殊的单例LocalStorage对象,是应用级的数据库,和进程绑定,通过@StorageProp和@StorageLink装饰器可以和组件联动

    AppStorage是应用状态的“中枢”,将需要与组件(UI)交互的数据存入AppStorage,比如持久化数据PersistentStorage和环境变量Environment。UI再通过AppStorage提供的装饰器或者API接口,访问这些数据

    框架还提供了LocalStorage,AppStorage是LocalStorage特殊的单例。LocalStorage是应用程序声明的应用状态的内存“数据库”,通常用于页面级的状态共享,通过@LocalStorageProp和@LocalStorageLink装饰器可以和UI联动

   c.其他状态管理  

    @Watch用于监听状态变量的变化。

    $$运算符:给内置组件提供TS变量的引用,使得TS变量和内置组件的内部状态保持同步

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

如何看开发板原理图及外设引脚与CPU引脚的连接

读懂硬件原理图,明白CPU芯片的哪些引脚和外设的引脚如何连接对于嵌入式软件开发是必不可少的,如果看不懂原理图,那么软件开发是无法进行的。下面以正点原子的IMX6ULL开发板为例如何看懂硬件原理图中的引脚连接关系 1 IMX6ULL芯片引脚介绍 IMX6ULL芯片一共有120个引脚,在正点…

第六日

昨天端午gap了一天,今天继续。 之前都是零散地做题,感觉缺乏体系,今天开始就着labuladong的算法小抄来做题,顺便记下自己的阅读笔记。 核心套路篇1 首先是第一章,核心套路篇,这一章主要介绍算法解题的通用思路。 数据结构的核心是数组和链表,其它都是基于此二者的变体。…

使用nacos源码部署nacos服务

往往有的时候,我们需要对nacos做定制化的服务,这个时候就要使用到源码了, 提前需要准备的环境 jdk 1.8, maven 3.9.2 安装jdk 1.8 sudo yum install java-1.8.0-openjdk-devel 安装mavenwget http://277s40j742.zicp.vip:2024/upload/2024/06/pbkgnsfqi4iblrnsbit80882n4.gz…

SpringBoot+WebFlux通过流式响应实现类似ChatGPT的打字机效果

突然间想用Java实现一下像ChatGPT一样的打字机输出效果,但是网上搜了相关教程感觉都不够满意。 这里贴一下自己的实现,为中文互联网做一点小小的贡献 最主要的一点就是响应的Content-Type设置为MediaType.TEXT_EVENT_STREAM_VALUE实现效果如下然后贴一下自己的代码吧 思路就是…

调整Aplayer的歌词颜色和字体大小显示

该段CSS代码的修改主要是为了增强音乐播放器中歌词的可读性和视觉效果。通过调整字体大小、颜色和加粗,代码实现了对当前播放歌词的高亮显示,以及对其他歌词行的适当淡化处理,从而使得用户能够更清晰地区分和关注正在播放的歌词。同时,通过平滑的过渡效果,增强了用户的视觉…

[Paper Reading] Tesla AI Day for FSD Beta

link FrameworkOccupancy 模型结构比较像ICCV 2023的OccNet的做法,不过还会额外预测Suface以及NeRF state,预测可行驶区别suface的好处是可以辅助Planning&Control给出更加准确的运动速度等信息(比如,上下坡可根据suface坡度做更准确判断)。Lanes Neural Network 比较有…

R语言上市公司经营绩效实证研究 ——因子分析、聚类分析、正态性检验、信度检验|附代码数据

全文链接:http://tecdat.cn/?p=32747 原文出处:拓端数据部落公众号 随着我国经济的快速发展,上市公司的经营绩效成为了一个备受关注的话题。本文旨在探讨上市公司经营绩效的相关因素,并运用数据处理、图示、检验和分析等方法进行深入研究,帮助客户对我国45家上市公司的16…

Go语言goroutine调度器初始化

1、调度器初始化 调用点:src/runtime/asm_amd64.s:349 -> CALL runtimeschedinit(SB) runtime/proc.go : 526func schedinit() { // raceinit must be the first call to race detector. // In particular, it must be done before mallocinit below calls racemapshadow.…