相关问题
HarmonyOS 关于状态变量深层次响应的问题
778浏览 • 1回复 待解决
HarmonyOS constraintSize支持状态变量?
990浏览 • 1回复 待解决
HarmonyOS @Require 修饰的无状态变量必须要给初始默认值?
1048浏览 • 1回复 待解决
状态变量和常规变量有什么区别?
1304浏览 • 2回复 待解决
自定义组件中,批量更新多个状态变量 vs 批量更新多个非状态变量后更新一个UI无关状态变量强制更新UI
2665浏览 • 1回复 待解决
ArkTS中如何监听状态变量的变化?
2036浏览 • 1回复 待解决
HarmonyOS taskpool参数是状态变量crash
718浏览 • 1回复 待解决
HarmonyOS 状态变量不刷新问题
1645浏览 • 1回复 待解决
HarmonyOS hidumper查看状态变量关联的组件数
707浏览 • 1回复 待解决
HarmonyOS 状态变量更新及其@watch监听问题
895浏览 • 1回复 待解决
HarmonyOS zIndex能否通过状态变量来更新
618浏览 • 1回复 待解决
如何将界面上的状态变量传给服务层,在服务层修改状态变量对象的属性刷新页面
1315浏览 • 1回复 待解决
HarmonyOS 每个页面相同的状态变量如何封装?
1040浏览 • 1回复 待解决
HarmonyOS 组件状态变量改变,build重绘问题
821浏览 • 1回复 待解决
HarmonyOS 外部类方法如何改变组件状态变量
567浏览 • 1回复 待解决
@Provide的状态变量,是否可以观察多层嵌套的属性?
1595浏览 • 1回复 待解决
HarmonyOS @Builder函数接收的状态变量未引起内部ui变化
677浏览 • 1回复 待解决
HarmonyOS IDE能否监听到State状态变量是在什么地方修改的,类似代码插桩能力
806浏览 • 1回复 待解决
HarmonyOS @Builder嵌套二层传递状态变量无法识别
600浏览 • 1回复 待解决
基于滑动监听和状态变量实现滑动时取消按压态
1344浏览 • 1回复 待解决
backgroud()方法使用@State修饰的状态变量值更新后未能触发不同的@builder方法刷新
3118浏览 • 1回复 待解决
HarmonyOS @Watch可以观察到@Consume装饰的状态变量更改吗
712浏览 • 1回复 待解决
HarmonyOS Navigtion组件,两个NavDestination之间如何同步状态变量
1025浏览 • 1回复 待解决
#鸿蒙学习大百科#在ArkUI中,什么是状态变量?
881浏览 • 1回复 待解决
HarmonyOS 怎么实现状态变量变化时,触发指定函数
535浏览 • 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来观测。在附件中附上一个二维数组的改造的数据结构,可以完美监听二维数组的数据变化。