相关问题
自定义组件中,批量更新多个状态变量 vs 批量更新多个非状态变量后更新一个UI无关状态变量强制更新UI
523浏览 • 1回复 待解决
如何将界面上的状态变量传给服务层,在服务层修改状态变量对象的属性刷新页面
275浏览 • 1回复 待解决
@Provide的状态变量,是否可以观察多层嵌套的属性?
410浏览 • 1回复 待解决
基于滑动监听和状态变量实现滑动时取消按压态
290浏览 • 1回复 待解决
backgroud()方法使用@State修饰的状态变量值更新后未能触发不同的@builder方法刷新
669浏览 • 1回复 待解决
如何在自定义组件的构建流程里跟踪组件数据或者状态,如在build里增加日志跟踪状态变量等
516浏览 • 1回复 待解决
List的item点击变色有什么好方法吗,现在是用是否是点击状态和选择的index两个状态变量共同控制的背景色
504浏览 • 1回复 待解决
我在ets文件内,自定义组件外写了个setInterval定时器,在这个定时器内如何修改自定义组件的状态变量
699浏览 • 1回复 待解决
UI界面中用@state绑定的变量,在逻辑代码中class中做了修改,怎么在UI界面察觉到这个@state变量发生了变化
453浏览 • 1回复 待解决
@State 修饰的变量值改变,界面不刷新
401浏览 • 1回复 待解决
关于Record使用变量的相关用法.并了解一下record的关于变量作为key的标准写法
330浏览 • 1回复 待解决
如何知道redis的master/slave状态?
1099浏览 • 1回复 待解决
状态管理装饰器:state和observerd/objectlink,性能对比
407浏览 • 1回复 待解决
关于SharedPreferences的问题谁知道?
3752浏览 • 1回复 待解决
下列哪些状态装饰器修饰的属性必须在本地进行初始化。
3268浏览 • 1回复 待解决
关于图片组件的问题有知道的吗?
625浏览 • 1回复 待解决
关于redis 集群问题有知道的吗?
1011浏览 • 1回复 待解决
已停止维护的接口如何理解?关于网络状态的疑问
287浏览 • 1回复 待解决
关于msmq消息队列有知道的吗?
925浏览 • 1回复 待解决
关于禁用屏保的问题有知道的吗?
1324浏览 • 1回复 待解决
有人知道关于页demo吗?
388浏览 • 1回复 待解决
关于clog和data的问题有知道的吗?
1880浏览 • 1回复 待解决
关于用 Redis 查询的问题有知道的吗?
1338浏览 • 1回复 待解决
状态管理相关问题,有人知道吗?
351浏览 • 1回复 待解决
关于短信监控和处理的问题有知道的吗?
1305浏览 • 1回复 待解决
开发过程中,对于状态变量的使用开发者总是很难搞清楚,不同状态变量的使用场景;不管什么数据类型都用@state修饰,遇到class就用observe修饰,到运行时就会发现根本无法达到预期。所以本文引入几个概念,尽量将状态变量的使用场景描述清楚,尤其是@state和observe的使用场景。
@state和单层数据
首先我们先引入单层数据的定义:
单层数据:基础数据类型(string、boolean、number)、由
基础数据类型的成员变量组合的类或者者集合(如:Array<string>)和数组长度及数组某成员的整体变化;为了各位更好的理解,给大家举个常用的例子:
对于单层数据的变化,@state都可以完美修饰,从而体现在视图上;致此大家可以看到并非所有的类都需要@observe来修饰,那什么时候需要使用@observe和@objectLink,各位看官请继续往下走;
@observe、@objectLink和双层数据
在单层数据的基础上,我们再引入双层数据结构的定义,大家应该就很容易理解了:
双层数据:class中包含额外class类型的成员变量(依赖的class仍是由基础类型组成),Array中的class的成员变量(你懂得特指class中的基础成员变量)
如果你想这些双层数据的变化也能够完美的体现在视图上,这时候就得引入@observe和@objectLink了现将这些class用@observe修饰,然后再在子组件里使用@0bjectLink接收。下文对于以上这两种情形已具体demo给出,各位看官请观看:
总结:
当前arkui对于复杂数据的支持,需要借助observe和objectLink来支持,原则上每多一层数据结构,就需要新增observe来观测。在附件中附上一个二维数组的改造的数据结构,可以完美监听二维数组的数据变化。