首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏万少的技术分享

    Harmony 状态管理神器 @ObservedV2

    Harmony 状态管理神器 @ObservedV2 背景 最近Harmony 应用开发技术中推出了新版的状态管理技术,试用过后,直呼很香。我们来看为什么? @Trace装饰器 截至 2024年7月15日 v2都是试用版 介绍 为了增强状态管理框架对类对象中属性的观测能力,开发者可以使用**@ObservedV2**装饰器和@Trace装饰器装饰类以及类中的属性 其中,官网上的表达如下: @ObservedV2装饰器与 @Trace 装饰器需要配合使用,单独使用 @ObservedV2装饰器 @Trace 装饰器没有任何作用。 @ObservedV2 的类实例目前不支持使用JSON.stringify进行序列化。 我们针对以上总结一下。 装饰器和 @ObjectLink装饰器 是比较稳定的技术,但是开发效率低,体验不好,对代码具有入侵型 @ObservedV2装饰器和 @Trace 装饰器是新推出的v2的版本,目前还在试用期,大概率会成为稳定版

    25610编辑于 2025-02-10
  • 来自专栏万少的技术分享

    Harmony状态管理AppStorageV2和PersistenceV2

    Harmony状态管理AppStorageV2和PersistenceV2 前言 在HarmonyOS应用开发过程中,我们已经学习过了不少关于状态管理相关的技术,如 @ObservedV2装饰器和@Trace 装饰器:状态变量修改监听 @Provider装饰器和@Consumer装饰器:跨组件层级双向同步(没有讲过) @Computed装饰器:计算属性 @Type装饰器:标记类属性的类型 以上状态管理技术,都是围绕着组件内部本身的 现在要讲解的AppStorageV2和PersistenceV2可以理解为应用/全局的状态管理技术。 AppStorageV2是应用级别的数据管理技术,跨组件、跨页面。 AppStorageV2是应用级别的数据管理技术,跨组件、跨页面。只要是主线程之内的UIAbility实例都可以共享数据。但是退出应用数据会自动 销毁。 @Local 是用来修饰person,表示person是一个状态状态改变时,会引起UI的更新 .connect(Person,..

    40000编辑于 2025-02-10
  • 来自专栏鸿蒙开发

    鸿蒙NEXT-状态管理V1和状态管理V2的差别

    ​ 1.在V2中没有了@Link,来进行父组件和子组件的双向绑定。 @Event只能使用在@ComponentV2装饰的组件中使用 示例代码: @Entry @ComponentV2 struct Index { @Local title: string = "待修改 changeFactory: () => { this.title="已修改" } }) } } } @ComponentV2 @Watch在V2中是@Monitor 在V1中@Watch只能监听到第一层属性变化,而在V2中@Monitor,修饰,在对应的深层变量中使用@Trace,搭配使用,可以进行深层监听。 V2:通过@ObservedV2+@Trace实现深度属性监听,支持任意层级嵌套对象的属性变更检测(如obj.a.b.c),无需额外组件封装 ​

    31810编辑于 2025-07-03
  • 来自专栏vue封装H5

    状态管理

    浏览器与服务器的Http协议决定了他们的一次连接一次交互然后立刻关闭,这就会出现一个问题,如何保存和识别同一个用户多次访问该服务器时候留下来的数据呢,其实状态就是每次访问留下来的数据,管理就是对这些数据进行修改 ,所以状态管理就是对这些数据进行保存和修改处理 2管理的两种方式: (1)、cookie:浏览器向服务器发送请求时候,服务器会将本次交互的少量数据以set-cookie消息头的方式发送给浏览器,浏览器会将这些数据保存下来 ,下次再次发送请求的时候,又会将这些数据以cookie消息头的形式发送给服务器,然后服务器会找出这次cookie的数据 (2)、session:浏览器发送请求过来,服务器会单独分配一个内存空间来创建一个

    55720编辑于 2022-03-06
  • 来自专栏每天学点Android知识

    Flutter状态管理(2)——单Stream和广播Stream

    在Flutter状态管理(1)——InheritedWidget中介绍了状态管理以及如何使用InheritedWidget来实现全局状态管理。这篇博客将介绍如何使用Stream来实现状态管理。 单Stream Flutter中的StreamBuilder组件封装了Stream,可以根据不同的状态创建不同的Widget。 这种单Stream可以在一个页面中控制状态,因为只能有一个订阅者,因此只能做局部状态的控制。 使用Stream进行全局状态管理,有很大的局限性。因为这依赖于监听者的存在,而如果这个监听的页面还没出现或不在内存中,那么该页面的数据从哪里来呢? 这又会很麻烦,看来Stream的方式并不适合用在状态管理。 参考 Using StreamBuilder in Flutter Flutter中的状态管理

    3K41发布于 2019-09-24
  • 来自专栏小蔚记录

    vuex -- 状态管理

    components: { App } }) 这样就把 store 分离出去了 , 那么还有一个问题是 : 这里 $store.state.show 无论哪个组件都可以使用 , 那组件多了之后 , 状态也多了 , 这么多状态都堆在 store 文件夹下的 index.js 不好维护怎么办 ? 如果还有其他的组件需要使用 vuex , 就新建一个对应的状态文件 , 然后将他们加入 store 文件夹下的 index.js 文件中的 modules 中。 mutations 前面我们提到的对话框例子 , 我们对vuex 的依赖仅仅只有一个 $store.state.dialog.show 一个状态 , 但是如果我们要进行一个操作 , 需要依赖很多很多个状态 , 那管理起来又麻烦了 !

    1K30发布于 2019-09-12
  • 来自专栏iOS 备忘录

    Flutter 状态管理

    ,把为什么要进行状态管理以及什么是状态管理说的很通透,推荐大家看原文,这里是自己总结一下。 和其他的状态管理库(比如GetX)对比有什么优点,等等之类的都不清楚,所以一直很难深入学习。 为什么要状态管理那为什么要状态管理呢?其实理解了上面,就知道这其实不是个问题。由于项目使用MVVM所以需要 ViewModel。 作者推崇的Service Locator模式回归主题,如何实现状态管理,即如何设计State Management Layer? 其目的都是为了架起数据和 UI 的桥梁,不同的状态管理方式,本质上是不同的传递数据和事件的方式。

    40810编辑于 2024-07-09
  • 来自专栏flutter开发者

    Flutter状态管理

    ,于是便有了“状态管理”这个概念。 在前端开发中我们都会接触redux ,借助于redux 我们可以很轻松地完成多界面数据维护和获取,在Flutter中也有很多状态管理的第三方库,如Provider、Scoped Mode、flutter_redux Provider作为官方推荐的状态管理工具具有使用简单和管理方便的特点,今天我们就先来看下Provider如何使用。 ], ))), ); } } 小结 Provider是对InheritedWidget的封装方便我们在多个界面间传递数据 Provider支持同时管理多个数据的状态 可以借助与Consumer-Consumer6方法来管理多个数据状态

    2K10发布于 2020-06-16
  • 来自专栏前端文章小tips

    flutter-状态管理2-inheritedWidget的使用例子

    = data; } } 2.创建子Widget,依赖InheritedWidget的数据. print("执行didChangeDependencies"); } } ​ class Test2InheritedWidget extends StatelessWidget { const Test2InheritedWidget({Key key}) : super(key: key); ​ @override Widget build(BuildContext context (); } } ​ class _InheritedWidgetTest2PageState extends State<InheritedWidgetTest2Page> { int count ShareDataWidget)共享数据是只读的,如果要实现数据变化更新,依然需要依赖于StatefulWidget(InheritedWidgetTestPage)的setState. 6.不支持跨页面的状态

    97400编辑于 2021-11-28
  • 来自专栏shysh95

    Flink状态管理

    Hi~朋友,关注置顶防止错过消息 什么是有状态的计算 使用状态的场景 为什么需要状态管理 理想状态管理的特点 Flink状态分类 Managed State分类 Keyed Stated特点 Operator 为什么需要状态管理? 理想状态管理的特点 易用:需要提供丰富的数据结构、多样的状态组织形式以及简洁的扩展接口 高效:实时作业需要需要更低的延迟,因此在状态保存和恢复时,需要保证处理速度;同时在进行横向扩展时不能影响作业本身的处理性能 可靠:状态需要可以被持久化,保证宕机后可以恢复 Flink状态分类 Managed State RawState 状态管理方式 Flink Runtime自动管理:自动存储、自动恢复、内存优化 用户自己管理 Checkpoint存储在外部文件系统,因此State不能超过单个TaskManager内存+磁盘总和,单key最大为2GB,总大小不超过文件系统的容量即可,推荐大状态作业使用。

    1.2K30编辑于 2022-10-31
  • 来自专栏网络收集

    九、状态管理

    九、状态管理9.1 现有问题 HTTP协议是无状态的,不能保存每次提交的信息 如果用户发来一个新的请求,服务器无法知道它是否与上次的请求有联系。 9.2 概念将浏览器与web服务器之间多次交互当作一个整体来处理,并且将多次交互所涉及的数据(即状态)保存下来。 客户端状态管理技术:将状态保存在客户端。代表性的是Cookie技术。 服务器状态管理技术:将状态保存在服务器端。 9.7 Session概述Session用于记录用户的状态。Session指的是在一段时间内,单个客户端与Web服务器的一连串相关的交互过程。 2.URL重写浏览器在访问服务器上的某个地址时,不再使用原来的那个地址,而是使用经过改写的地址(即在原来的地址后面加上了sessionID)。

    58030编辑于 2022-07-24
  • 来自专栏行者常至

    状态管理-Session

    用户访问需要保护的资源时,可以使用Session验证的方式来保证其安全性,比如要求登录后才能访问的资源 实现Session验证,遵循以下步骤 1、使用Session.setAttribute()先绑定数据 2、 String url)生成重写后的URL 如果是重定向,使用response.encodeRedirectURL(String url)生成重写后的URL Session的优缺点 优点 安全(将状态保存在服务器端 ) Session能够保存的数据类型更丰富,Cookie只能保存字符串 Session能够保存更多的数据,Cookie大约保存4K 缺点 Session将状态保存在服务器端,占用服务器的内存,如果用户量过大

    74420发布于 2018-08-10
  • 来自专栏用户4077185的专栏

    Flutter | 状态管理

    保证在状态发生改变之后,可以立即同步到页面中; Flutter 中的状态管理 在 Flutter 中,StatefulWidget 的状态应该被谁管理? Widget 本身? 答案是取决于实际情况 以下是管理状态最常见的方法: Widget 管理自己的状态 如果状态时有关界面外观效果的,例如颜色,动画,那么状态最好由 Widget本身来管理 Widget 管理子 Widget 的状态 如果状态是用户数据,如选中的状态,滑块的位置,则该状态最好由父 Widget 管理 混合管理(父 Widget 和 子 Widget 都管理状态) 如果某一个状态是不同 Widget 执行效果和上图一样 混合状态管理 对于一些组件来说,混合管理的方式会非常有用,组件自身管理一些内部的状态,而父组件管理一些其他的外部状态 示例: //----------------------- 方法中订阅语言改变事件,当用户切换语言之后,订阅此事件的组件就会收到通知,收到通知后重新 setState 即可 2,使用一些专门用于状态管理的包,如 Provider,Redux 等,具体的使用可上

    91930编辑于 2022-02-11
  • 来自专栏IfDataBig

    Flink 状态管理

    ,即假设算子的并行度是 2,那么其应有两个对应的算子状态: 2.2 键控状态 键控状态 (Keyed State) :是一种特殊的算子状态,即状态是根据 key 值进行区分的,Flink 会为每类键值维护一个状态实例 二、状态编程 2.1 键控状态 Flink 提供了以下数据格式来管理和存储键控状态 (Keyed State): ValueState:存储单值类型的状态。 4.1 状态管理器分类 默认情况下,所有的状态都存储在 JVM 的堆内存中,在状态数据过多的情况下,这种方式很有可能导致内存溢出,因此 Flink 该提供了其它方式来存储状态数据,这些存储方式统一称为状态后端 (或状态管理器): 主要有以下三种: 1. RocksDBStateBackend RocksDBStateBackend 是 Flink 内置的第三方状态管理器,采用嵌入式的 key-value 型数据库 RocksDB 来存储正在进行的数据。

    70220编辑于 2022-07-27
  • 来自专栏前端数据可视化

    canvas 状态管理

    什么是 Canvas 状态 canvas 是根据状态来绘图的。所谓的状态就是指当前画布正在使用什么填充色(fill)、什么描边色(stroke) 等样式。 /canvas> <script> const context = document.getElementById('c') const ctx = context.getContext('2d ctx.fillStyle = 'orange' // 设置填充色为橙色 ctx.strokeStyle = 'hotpink' // 设置描边色为亮粉 ctx.lineWidth = 2 // 描边宽度 2 ctx.beginPath() // 第三个矩形 ctx.rect(10, 100, 100, 60) ctx.fill() ctx.stroke() ctx.restore canvas 状态可以将裁剪区域还原到指定状态,可以将变形的画布还原到指定状态,还可以将大部分样式还原到指定状态。有兴趣的工友可以自己动手尝试一下~ 代码仓库 ⭐雷猴 Canvas

    1.1K20编辑于 2023-02-26
  • 来自专栏行者常至

    状态管理-Cookie

    状态管理 为什么需要状态管理? Web应用程序使用HTTP协议通信,而HTTP协议是“无状态”协议,即:服务器一旦响应完客户的请求之后,就断开连接,而同一个客户的下次请求将重新建立网络连接。 什么是状态管理? 将客户端(浏览器)与服务器之间多次交互(一次请求,一次响应)当做一个整体来看待,并且将多次交互所涉及的数据即状态保存下来。 状态指的是数据。 管理指的是多次交互时对数据的修改。 状态管理的两种常见模式 客户端状态管理技术:将状态保存在客户端。代表性的是Cookie技术。 服务器状态管理技术:将状态保存在服务器端。代表性的是Session技术。 String Cookie.getName(); String Cookie.getValue(); 如何修改Cookie step1、获取客户端发送的所有Cookie step2、 Cookie("uname","jack"); c.setPath("/appName"); response.addCookie(c); Cookie的限制 Cookie可以被用户禁止 Cookie会将状态保存在浏览器端

    67430发布于 2018-08-10
  • 来自专栏用户4773577的专栏

    鸿蒙Next状态管理装饰器V2 @Provider @Consumer

    @Provider和@Consumer用于跨组件层级数据双向同步,可以使得开发者不用拘泥于组件层级@Entry@ComponentV2struct test3{ @Provider() message Math.floor(Math.random() * 11) }) child1() }.width('100%') .height('100%') }}@ComponentV2struct

    17710编辑于 2025-06-28
  • 来自专栏用户4773577的专栏

    鸿蒙Next状态管理装饰器V2 @ObservedV2@Trace@Local

    ,为了增强状态管理框架对类对象中属性的观测能力,开发者可以使用@ObservedV2装饰器和@Trace装饰器装饰类以及类中的属性。 概述@ObservedV2装饰器与@Trace装饰器用于装饰类以及类中的属性,使得被装饰的类和属性具有深度观测的能力:@ObservedV2装饰器与@Trace装饰器需要配合使用,单独使用@ObservedV2 @ObservedV2的类实例目前不支持使用JSON.stringify进行序列化。 @ObservedV2class Child{ @Trace name:string='child'}@ObservedV2class Father{ @Trace name:string='father ' child:Child=new Child();}@Entry@ComponentV2struct test2{ father:Father = new Father() @Local message

    22810编辑于 2025-06-28
  • 来自专栏路过君BLOG from CSDN

    vue2笔记11 vuex 全局状态管理

    多组件共享状态集中管理(读、写) 安装 npm i vuex 搭建vuex环境 创建vuex.store . Vue from "vue"; import Vuex from 'vuex' // 应用vuex插件 Vue.use(Vuex) // 响应组件中的动作 const actions = {} // 操作状态数据 /store/index.js中引入并应用即可 使用store管理全局状态 创建store . -- 使用状态数据 -->

    {{$store.state.myMessage}}

    <! mutations ...mapActions(['myAction']), ...mapMutations(['myMutation']) }, } </script> 模块化 注册模块状态

    79220编辑于 2022-04-13
  • 来自专栏HarmonyOS知识集合

    【HarmonyOS Next】鸿蒙状态管理V2装饰器详解

    【HarmonyOS Next】鸿蒙状态管理V2装饰器详解一、为什么需要V2状态管理装饰器?首先我们需要了解什么是状态管理?在鸿蒙应用开发中,状态管理指的是,管理数据变化去刷新UI的整个过程。 举个例子,比如在界面中标题文本的动态刷新,从A刷新成B,这个文本的刷新过程,其实就是个状态的变化过程。整个过程的处理可以称之为状态管理。 但是目前开发进程还有堵塞点,官方建议慎重使用V2。二、V2状态管理装饰器怎么用?综上所述,我们知道解决多层嵌套对象刷新的痛点,是V2的主要任务。 三、V2状态管理装饰器的优点和不足V2的优点具备深度观察、属性级更新。 animateTo暂不支持直接在状态管理V2中使用。点击跳转官方V1迁移V2的配套指导。

    75200编辑于 2025-03-24
领券