HarmonyOS-ArkUI V2装饰器@Local装饰器:组件内部状态

发布于:2025-04-12 ⋅ 阅读:(38) ⋅ 点赞:(0)

@Local装饰器的作用

@Local装饰器是用来装饰组件内的状态的。而且它修饰的变量可以成为数据源。Local装饰器,作用跟名字差不多,重点突出了“本地”的特性,也就是使用的范围仅仅限制在组件内部。且它在初始化的时候必须是在本地进行初始化的,不能在外部组件,同时也禁止了外部组件调用此组件的时候传入初始化参数。

相比于V1版本的@State装饰器,@Local装饰器强调了它的“局部”的特性。

而@State标明被修饰的数据是一个数据源,但是它就没有限制组件在初始化的时候不可以改它的值。有时候我们在调用组件的时候会出现误改值,多改值的情况,但是组件本身是阻挡不了调用者怎么调用的。而@Local装饰器限制了这种行为。

装饰器名称

参数

可装饰的变量类型

初始值

@Local

-

number, string, boolean,

Array, Map, Set, Date,

Object class enum

null undefined

必须在本地进行初始化,并且不能由外部传入。

@Local装饰器表示的是组件内部的状态,使得自定义组件的内部变量具有观测变化的能力。有以下几个点需要注意

  • Local是V2的组件,只能在@ComponentV2装饰的自定义组件中使用。
  • 被@Local修饰的变量无法在外部进行初始化,因此必须在组件内部进行初始化。
  • 当@Local修饰的变量发生变化时,那么使用到它的界面也会发生变化。
  • @Local装饰器支持观测的类型有class, enum, Object, number, string, boolean基础变量,和 Array,Set,Map,Date等内嵌类型。
  • @Local的观测范围仅仅限制在被修饰的变量本身而已,
    1. 当被修饰的变量是number, string, boolean基础类型时,能够观测的是变量的复制行为。
    2. 而当修饰的是class, enum, Object对象类型时,仅仅能观测到对此变量整体的赋值。
    3. 当修饰的是数组时,能够观测到数组整体的赋值以及数组元素项的变化。
    4. 当装饰的是Array,Set,Map,Date等内嵌类型时,可以观测到通过API调用带来的变化。
  • @Local支持null,undefined以及联合类型。


上文中提到的Array,Set,Map,Date等内嵌类型,被观测的API一览表

内置类型

被观测API

Array

push、pop、shift、unshift、splice、copyWithin、fill、reverse、sort

Set

add, detete, clear

Map

set, delete, clear

Date

setFullYear, setMonth, setDate, setHours, setMinutes, setSeconds, setMilliseconds, setTime, setUTCFullYear, setUTCMonth, setUTCDate, setU


网站公告

今日签到

点亮在社区的每一天
去签到