@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的观测范围仅仅限制在被修饰的变量本身而已,
- 当被修饰的变量是number, string, boolean基础类型时,能够观测的是变量的复制行为。
- 而当修饰的是class, enum, Object对象类型时,仅仅能观测到对此变量整体的赋值。
- 当修饰的是数组时,能够观测到数组整体的赋值以及数组元素项的变化。
- 当装饰的是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 |