相关问题
自定义组件中,批量更新多个状态变量 vs 批量更新多个非状态变量后更新一个UI无关状态变量强制更新UI
1713浏览 • 1回复 待解决
状态变量和常规变量有什么区别?
462浏览 • 2回复 待解决
HarmonyOS @Require 修饰的无状态变量必须要给初始默认值?
147浏览 • 1回复 待解决
ArkTS中如何监听状态变量的变化?
996浏览 • 1回复 待解决
HarmonyOS 状态变量不刷新问题
460浏览 • 1回复 待解决
如何将界面上的状态变量传给服务层,在服务层修改状态变量对象的属性刷新页面
628浏览 • 1回复 待解决
HarmonyOS 每个页面相同的状态变量如何封装?
350浏览 • 1回复 待解决
@Provide的状态变量,是否可以观察多层嵌套的属性?
845浏览 • 1回复 待解决
基于滑动监听和状态变量实现滑动时取消按压态
730浏览 • 1回复 待解决
HarmonyOS IDE能否监听到State状态变量是在什么地方修改的,类似代码插桩能力
306浏览 • 1回复 待解决
backgroud()方法使用@State修饰的状态变量值更新后未能触发不同的@builder方法刷新
2222浏览 • 1回复 待解决
#鸿蒙学习大百科#在ArkUI中,什么是状态变量?
228浏览 • 1回复 待解决
HarmonyOS Navigtion组件,两个NavDestination之间如何同步状态变量
387浏览 • 1回复 待解决
#鸿蒙通关秘籍#怎样在ArkTS中使用@Watch装饰器监听状态变量的变化?
193浏览 • 1回复 待解决
一个自定义组件内某一时机批量刷新多个@State修饰的状态变量,是否会影响性能
337浏览 • 1回复 待解决
#鸿蒙学习大百科#状态变量的变化何时会触发UI刷新?
243浏览 • 1回复 待解决
#鸿蒙学习大百科#如何避免不必要的状态变量的使用?
221浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何在鸿蒙NEXT组件中通过@Styles装饰器访问状态变量
122浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何在HarmonyOS中使用@Watch装饰器监听状态变量变化?
134浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何避免在鸿蒙开发中使用状态变量强行更新组件?
92浏览 • 1回复 待解决
#鸿蒙学习大百科#状态变量的数量对于app的性能有什么影响?
368浏览 • 1回复 待解决
在自定义组件Page的build方法里改变状态变量会造成什么影响?
458浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何在HarmonyOS Next中灵活运用状态变量和普通变量来构建界面?
131浏览 • 1回复 待解决
如何在自定义组件的构建流程里跟踪组件数据或者状态,如在build里增加日志跟踪状态变量等
1929浏览 • 1回复 待解决
#鸿蒙通关秘籍# 鸿蒙应用开发时如何优化状态变量的使用,避免不必要的组件刷新以提升性能?
24浏览 • 0回复 待解决
开发过程中,对于状态变量的使用开发者总是很难搞清楚,不同状态变量的使用场景;不管什么数据类型都用@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来观测。在附件中附上一个二维数组的改造的数据结构,可以完美监听二维数组的数据变化。