首页 > 其他分享 >状态管理 state

状态管理 state

时间:2023-08-02 14:45:23浏览次数:25  
标签:状态 ... 管理 State state UI 组件 装饰

状态管理

LocalStorage:页面级UI状态存储,通常用于UIAbility内、页面间的状态共享。
AppStorage:特殊的单例LocalStorage对象,由UI框架在应用程序启动时创建,为应用程序UI状态属性提供中央存储;
PersistentStorage:持久化存储UI状态,通常和AppStorage配合使用,选择AppStorage存储的数据写入磁盘,以确保这些属性在应用程序重新启动时的值与应用程序关闭时的值相同;
Environment:应用程序运行的设备的环境参数,环境参数会同步到AppStorage中,可以和AppStorage搭配使用
组件状态管理装饰器用来管理组件中的状态,它们分别是:@State、@Prop、@Link。

@State装饰的变量是组件内部的状态数据,当这些状态数据被修改时,将会调用所在组件的build方法进行UI刷新。

@Prop与@State有相同的语义,但初始化方式不同。@Prop装饰的变量必须使用其父组件提供的@State变量进行初始化,允许组件内部修改@Prop变量,但更改不会通知给父组件,即@Prop属于单向数据绑定。

@Link装饰的变量可以和父组件的@State变量建立双向数据绑定,需要注意的是:@Link变量不能在组件内部进行初始化。

使用@Provide和@Consume装饰器可以实现跨组件层级双向同步状态。
跨组件层级双向同步状态是指@Provide修饰的状态变量自动对提供者组件的所有后代组件可用,后代组件通过使用@Consume装饰的变量来获得对提供的状态变量的访问。
@Provide作为数据的提供方,可以更新其子孙节点的数据,并触发页面渲染。@Consume在感知到@Provide数据的更新后,会触发当前自定义组件的重新渲染。

在实际应用开发中,应用会根据需要封装数据模型。如果需要观察嵌套类对象属性变化,需要使用@Observed和@ObjectLink装饰器,因为上述表格中的装饰器只能观察到对象的第一层属性变化。
@Observed和@ObjectLink装饰器的具体使用方法可参考@Observed和ObjectLink数据管理。

另外,当状态改变,需要对状态变化进行监听做一些相应的操作时,可以使用@Watch装饰器来修饰状态
@Component
export default struct TargetListItem {
  @Link @Watch('onClickIndexChanged') clickIndex: number;
  @State isExpanded: boolean = false
  ...

  onClickIndexChanged() {
    if (this.clickIndex != this.index) {
      this.isExpanded = false;
    }
  }

  build() {
    ...
       Column() {
        ...
       }
       .onClick(() => {
        ...
           this.clickIndex = this.index;
        ...
       })
    ...
  }
}

标签:状态,...,管理,State,state,UI,组件,装饰
From: https://www.cnblogs.com/cps666/p/17600625.html

相关文章

  • 推荐一个node版本的管理工具--NVM
    前言当公司项目较多且不同项目使用不同的node版本才能启动时,我们就有必要使用nvm进行Node版本的切换,方便我们快速启动不同的项目。参考博客:https://blog.csdn.net/weixin_53667605/article/details/130603686 nvm常用指令nvmoff//禁用node.......
  • 生产企业如何进行MRO采购管理
    MRO(维修、运行与操作)采购管理是生产企业在进行日常运营中对设备、工具、仪器和零件等非生产资料,包括可复用工器具,包括切屑刀具,手工具、电动工具、锯片、磨具磨料等备品备件,如何快速、精确清点、不遗失?如何在规定次数内,合理使用?如何保证交接、准确收发?如何做到每次使用溯源?MRO采购管......
  • 构建以人为本的全面预算管理模式
    在财务分析的转型过程中,系统、预测、过程和大数据等都发挥着重要的作用,除此之外,我们往往会忽视一个更重要的因素——人在成功的转型项目中更是发挥着核心作用。企业大部分转型之旅都与人有关,通常人可以发挥创造力以更好地为企业服务。如今,数据质量正以难以置信的速度得到改善,企业运......
  • 直播app开发,页面顶部图片延伸到状态栏
    直播app开发,页面顶部图片延伸到状态栏 if(Build.VERSION.SDK_INT>=Build.VERSION_CODES.LOLLIPOP){     //5.0全透明实现  //getWindow.setStatusBarColor(Color.TRANSPARENT)  Windowwindow=getWindow();  window.clearFlags(WindowManager.Layou......
  • 项目散、规划难,建筑行业的税务管理难题该如何解决?
    建筑行业作为我国国民经济的支柱产业之一,发挥着支撑和发展国民经济的重要作用。近年来,建筑业总产值与利润总额增速逐渐放缓,行业产值利润率连续五年下降,利润空间进一步缩小。同时,建筑企业普遍存在债务率高、资金周转偏慢、回收期长等问题,市场进入发展平缓期,粗放式经营已经不适合当下......
  • patriotic 集群管理
    2022-05-05346安装环境主机名ip角色cs1192.168.43.10etcd、patroni、postgresqlcs2192.168.43.11etcd、patroni、postgresqlcs3192.168.43.12etcd、patroni、postgresql工具简介及功能EtcdEtcd是一款基于Raft算法和协议开发的分布式key-value......
  • 汉源高科SNMP网络管理千兆2光8电工业级交换机支持ERPS环网VLAN划分导轨式
    HY5700-7528G-X二层网管工业以太网交换机为工业严酷苛刻环境而开发设计,提供2个千兆光纤接口和8个千兆以太网电接口。用户可根据工业应用现场的实际需要,选择合适的光纤的接口类型以及光接口的传输距离,提供灵活的组网方式。HY5700-7528G-X二层网管工业以太网交换机支持ERPS工业环网协......
  • Android App 隐藏标题栏+状态栏+导航栏
    1.隐藏当前Activity标题栏在当前Activity中调用:this.requestWindowFeature(Window.FEATURE_NO_TITLE);2.隐藏当前Activity状态栏(StatusBar)2.1Android4.0andLowerpublicclassMainActivityextendsActivity{@OverrideprotectedvoidonCreate(Bundle......
  • 汉源高科工业级千兆2光8电工业环网交换机WEB管理型智能组环光纤收发器VLAN划分导轨式
    HY5700-7528G-X系列是汉源高科自主研发的全千兆二层网管工业以太网光纤交换机,支持8个10/100/1000Base-T自适应RJ45端口+2个100/1000Base-XSFP光口插槽。所有端口支持线速转发。HY5700-7528G-X具备L2网管功能,支持IPV4/IPV6管理,支持完备的安全防护机制、完善的ACL/QoS策略和丰富的VL......
  • 基于B/S模式的电子病历系统,覆盖电子病历模板制作到管理使用的整个流程
    基于B/S模式的电子病历系统,覆盖电子病历模板制作到管理使用的整个流程电子病历EMR(ElectronicMedicalRecord)也称为计算机化的病历或基于计算机的病人记录CMR(ComputerBasedMdicalRecord),它是用电子设备保存、管理和传输数字化的病人医疗记录,是取代手写纸张的病历。对电子病历一致......