1# 应用级变量的状态管理 2<!--Kit: ArkUI--> 3<!--Subsystem: ArkUI--> 4<!--Owner: @zzq212050299--> 5<!--Designer: @s10021109--> 6<!--Tester: @TerryTsao--> 7<!--Adviser: @zhang_yixin13--> 8 9状态管理模块提供了应用程序的数据存储能力、持久化数据管理能力、UIAbility数据存储能力和应用程序需要的环境状态。 10 11>**说明:** 12> 13>本模块首批接口从API version 7开始支持,后续版本的新增接口,采用上角标单独标记接口的起始版本。 14 15本文中T和S的含义如下: 16 17| 类型 | 说明 | 18| ---- | -------------------------------------- | 19| T | Class,number,boolean,string和这些类型的数组形式。 | 20| S | number,boolean,string。 | 21 22## AppStorage 23 24AppStorage具体UI使用说明,详见[AppStorage(应用全局的UI状态存储)](../../../ui/state-management/arkts-appstorage.md) 25 26**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 27 28**系统能力:** SystemCapability.ArkUI.ArkUI.Full 29 30### ref<sup>12+</sup> 31 32static ref\<T\>(propName: string): AbstractProperty\<T\> | undefined 33 34如果给定的propName在[AppStorage](../../../ui/state-management/arkts-appstorage.md)中存在,则返回AppStorage中propName对应数据的引用。否则,返回undefined。 35 36与[link](#link10)的功能基本一致,但不需要手动释放返回的[AbstractProperty](#abstractproperty)类型的变量。 37 38**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 39 40**系统能力:** SystemCapability.ArkUI.ArkUI.Full 41 42**参数:** 43 44| 参数名 | 类型 | 必填 | 说明 | 45| -------- | ------ | ---- | ---------------------- | 46| propName | string | 是 | AppStorage中的属性名。 | 47 48**返回值:** 49 50| 类型 | 说明 | 51| -------------------------------------- | ------------------------------------------------------------ | 52| [AbstractProperty<T>](#abstractproperty) \| undefined | AppStorage中propName对应属性的引用,如果AppStorage中不存在对应的propName,则返回undefined。 | 53 54**示例:** 55 56```ts 57AppStorage.setOrCreate('PropA', 47); 58let refToPropA1: AbstractProperty<number> | undefined = AppStorage.ref('PropA'); 59let refToPropA2: AbstractProperty<number> | undefined = AppStorage.ref('PropA'); // refToPropA2.get() == 47 60refToPropA1?.set(48); // 同步修改AppStorage: refToPropA1.get() == refToPropA2.get() == 48 61``` 62 63### setAndRef<sup>12+</sup> 64 65static setAndRef<T>(propName: string, defaultValue: T): AbstractProperty<T> 66 67与[ref](#ref12)接口类似,如果给定的propName在[AppStorage](../../../ui/state-management/arkts-appstorage.md)中存在,则返回AppStorage中propName对应数据的引用。如果不存在,则使用defaultValue在AppStorage中创建和初始化propName对应的属性,并返回其引用。defaultValue须为T类型,可以为null或undefined。 68 69与[setAndLink](#setandlink10)的功能基本一致,但不需要手动释放返回的[AbstractProperty](#abstractproperty)类型的变量。 70 71> **说明:**<br/> 72> 从API version 12开始,AppStorage支持[Map](../../../ui/state-management/arkts-appstorage.md#装饰map类型变量)、[Set](../../../ui/state-management/arkts-appstorage.md#装饰set类型变量)、[Date类型](../../../ui/state-management/arkts-appstorage.md#装饰date类型变量),支持null、undefined以及[联合类型](../../../ui/state-management/arkts-appstorage.md#appstorage支持联合类型)。 73 74**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 75 76**系统能力:** SystemCapability.ArkUI.ArkUI.Full 77 78**参数:** 79 80| 参数名 | 类型 | 必填 | 说明 | 81| ------------ | ------ | ---- | ------------------------------------------------------------ | 82| propName | string | 是 | AppStorage中的属性名。 | 83| defaultValue | T | 是 | 当propName在AppStorage中不存在时,使用defaultValue在AppStorage中初始化对应的propName,defaultValue可以为null或undefined。 | 84 85**返回值:** 86 87| 类型 | 说明 | 88| ------------------------- | ------------------------------------------------------------ | 89| [AbstractProperty<T>](#abstractproperty) | AbstractProperty<T>的实例,为AppStorage中propName对应属性的引用。 | 90 91**示例:** 92 93```ts 94AppStorage.setOrCreate('PropA', 47); 95let ref1: AbstractProperty<number> = AppStorage.setAndRef('PropB', 49); // 用默认值49创建PropB 96let ref2: AbstractProperty<number> = AppStorage.setAndRef('PropA', 50); // PropA已存在,值为47 97``` 98 99### link<sup>10+</sup> 100 101static link<T>(propName: string): SubscribedAbstractProperty<T> 102 103与[AppStorage](../../../ui/state-management/arkts-appstorage.md)中对应的propName建立双向数据绑定。如果给定的propName在AppStorage中存在,返回AppStorage中propName对应属性的双向绑定数据。 104 105双向绑定数据的修改会同步回AppStorage中,AppStorage会将变化同步到所有绑定该propName的数据和自定义组件中。 106 107如果AppStorage中不存在propName,则返回undefined。 108 109**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 110 111**系统能力:** SystemCapability.ArkUI.ArkUI.Full 112 113**参数:** 114 115| 参数名 | 类型 | 必填 | 说明 | 116| -------- | ------ | ---- | ---------------- | 117| propName | string | 是 | AppStorage中的属性名。 | 118 119**返回值:** 120 121| 类型 | 说明 | 122| ----------------------------------- | ------------------------------------------------------------ | 123| [SubscribedAbstractProperty<T>](#subscribedabstractproperty) | 返回双向绑定的数据,如果AppStorage中不存在对应的propName,则返回undefined。 | 124 125**示例:** 126```ts 127AppStorage.setOrCreate('PropA', 47); 128let linkToPropA1: SubscribedAbstractProperty<number> = AppStorage.link('PropA'); 129let linkToPropA2: SubscribedAbstractProperty<number> = AppStorage.link('PropA'); // linkToPropA2.get() == 47 130linkToPropA1.set(48); // 双向同步: linkToPropA1.get() == linkToPropA2.get() == 48 131``` 132 133### setAndLink<sup>10+</sup> 134 135static setAndLink<T>(propName: string, defaultValue: T): SubscribedAbstractProperty<T> 136 137与[link](#link10)接口类似,如果给定的propName在[AppStorage](../../../ui/state-management/arkts-appstorage.md)中存在,则返回该propName对应的属性的双向绑定数据。如果不存在,则使用defaultValue在AppStorage中创建和初始化propName对应的属性,返回其双向绑定数据。defaultValue必须为T类型,从API version 12开始defaultValue可以为null或undefined。 138 139> **说明:**<br/> 140> 从API version 12开始,AppStorage支持[Map](../../../ui/state-management/arkts-appstorage.md#装饰map类型变量)、[Set](../../../ui/state-management/arkts-appstorage.md#装饰set类型变量)、[Date类型](../../../ui/state-management/arkts-appstorage.md#装饰date类型变量),支持null、undefined以及[联合类型](../../../ui/state-management/arkts-appstorage.md#appstorage支持联合类型)。 141 142**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 143 144**系统能力:** SystemCapability.ArkUI.ArkUI.Full 145 146**参数:** 147 148| 参数名 | 类型 | 必填 | 说明 | 149| ------------ | ------ | ---- | ------------------------------------------------------------ | 150| propName | string | 是 | AppStorage中的属性名。 | 151| defaultValue | T | 是 | 当propName在AppStorage中不存在时,使用defaultValue在AppStorage中初始化对应的propName,从API version 12开始,defaultValue可以为null或undefined。 | 152 153**返回值:** 154 155| 类型 | 说明 | 156| ----------------------------------- | ---------------------------------------- | 157| [SubscribedAbstractProperty<T>](#subscribedabstractproperty) | SubscribedAbstractProperty<T>的实例,为AppStorage中propName对应属性的双向绑定的数据。 | 158 159**示例:** 160```ts 161AppStorage.setOrCreate('PropA', 47); 162let link1: SubscribedAbstractProperty<number> = AppStorage.setAndLink('PropB', 49); // 用默认值49创建PropB 163let link2: SubscribedAbstractProperty<number> = AppStorage.setAndLink('PropA', 50); // PropA已存在,值为47 164``` 165 166### prop<sup>10+</sup> 167 168static prop<T>(propName: string): SubscribedAbstractProperty<T> 169 170与[AppStorage](../../../ui/state-management/arkts-appstorage.md)中对应的propName建立单向属性绑定。如果给定的propName在AppStorage中存在,则返回与AppStorage中propName对应属性的单向绑定数据。如果AppStorage中不存在propName,则返回undefined。单向绑定数据的修改不会被同步回AppStorage中。 171 172**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 173 174**系统能力:** SystemCapability.ArkUI.ArkUI.Full 175 176**参数:** 177 178| 参数名 | 类型 | 必填 | 说明 | 179| -------- | ------ | ---- | ---------------- | 180| propName | string | 是 | AppStorage中的属性名。 | 181 182**返回值:** 183 184| 类型 | 说明 | 185| ----------------------------------- | ------------------------------------------------------------ | 186| [SubscribedAbstractProperty<T>](#subscribedabstractproperty) | 返回单向绑定的数据,如果AppStorage中不存在对应的propName,则返回undefined。 | 187 188**示例:** 189 190```ts 191AppStorage.setOrCreate('PropA', 47); 192let prop1: SubscribedAbstractProperty<number> = AppStorage.prop('PropA'); 193let prop2: SubscribedAbstractProperty<number> = AppStorage.prop('PropA'); 194prop1.set(1); // 单向同步:prop1.get()的值为1,prop2.get()的值为47 195``` 196 197### setAndProp<sup>10+</sup> 198 199static setAndProp<T>(propName: string, defaultValue: T): SubscribedAbstractProperty<T> 200 201与[prop](#prop10)接口类似。如果给定的propName在[AppStorage](../../../ui/state-management/arkts-appstorage.md)中存在,则返回该propName对应的属性的单向绑定数据。如果不存在,则使用defaultValue在AppStorage中创建和初始化propName对应的属性,返回其单向绑定数据。defaultValue必须为T类型,从API version 12开始defaultValue可以为null或undefined。 202 203> **说明:**<br/> 204> 从API version 12开始,AppStorage支持[Map](../../../ui/state-management/arkts-appstorage.md#装饰map类型变量)、[Set](../../../ui/state-management/arkts-appstorage.md#装饰set类型变量)、[Date类型](../../../ui/state-management/arkts-appstorage.md#装饰date类型变量),支持null、undefined以及[联合类型](../../../ui/state-management/arkts-appstorage.md#appstorage支持联合类型)。 205 206**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 207 208**系统能力:** SystemCapability.ArkUI.ArkUI.Full 209 210**参数:** 211 212| 参数名 | 类型 | 必填 | 说明 | 213| ------------ | ------ | ---- | ------------------------------------------------------------ | 214| propName | string | 是 | AppStorage中的属性名。 | 215| defaultValue | T | 是 | 当propName在AppStorage中不存在时,使用defaultValue在AppStorage中初始化对应的propName,从API version 12开始,defaultValue可以为null或undefined。 | 216 217**返回值:** 218 219| 类型 | 说明 | 220| ----------------------------------- | --------------------------------------- | 221| [SubscribedAbstractProperty<T>](#subscribedabstractproperty) | SubscribedAbstractProperty<T>的实例。 | 222 223**示例:** 224```ts 225AppStorage.setOrCreate('PropA', 47); 226let prop: SubscribedAbstractProperty<number> = AppStorage.setAndProp('PropB', 49); // PropA -> 47, PropB -> 49 227``` 228 229### has<sup>10+</sup> 230 231static has(propName: string): boolean 232 233判断propName对应的属性是否在[AppStorage](../../../ui/state-management/arkts-appstorage.md)中存在。 234 235**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 236 237**系统能力:** SystemCapability.ArkUI.ArkUI.Full 238 239**参数:** 240 241| 参数名 | 类型 | 必填 | 说明 | 242| -------- | ------ | ---- | ---------------- | 243| propName | string | 是 | AppStorage中的属性名。 | 244 245**返回值:** 246 247| 类型 | 说明 | 248| ------- | ---------------------------------------- | 249| boolean | 如果propName对应的属性在AppStorage中存在,则返回true。不存在则返回false。 | 250 251**示例:** 252```ts 253AppStorage.has('simpleProp'); 254``` 255 256### get<sup>10+</sup> 257 258static get<T>(propName: string): T | undefined 259 260获取propName在[AppStorage](../../../ui/state-management/arkts-appstorage.md)中对应的属性值。如果不存在则返回undefined。 261 262**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 263 264**系统能力:** SystemCapability.ArkUI.ArkUI.Full 265 266**参数:** 267 268| 参数名 | 类型 | 必填 | 说明 | 269| -------- | ------ | ---- | ---------------- | 270| propName | string | 是 | AppStorage中的属性名。 | 271 272**返回值:** 273 274| 类型 | 说明 | 275| ------------------------ | ----------------------------------------------------------- | 276| T \| undefined | AppStorage中propName对应的属性,如果不存在则返回undefined。 | 277 278**示例:** 279```ts 280AppStorage.setOrCreate('PropA', 47); 281let value: number = AppStorage.get('PropA') as number; // 47 282``` 283 284### set<sup>10+</sup> 285 286static set<T>(propName: string, newValue: T): boolean 287 288在[AppStorage](../../../ui/state-management/arkts-appstorage.md)中设置propName对应属性的值。如果newValue的值和propName对应属性的值相同,即不需要做赋值操作,状态变量不会通知UI刷新propName对应属性的值,从API version 12开始,newValue可以为null或undefined。 289 290> **说明:**<br/> 291> 从API version 12开始,AppStorage支持[Map](../../../ui/state-management/arkts-appstorage.md#装饰map类型变量)、[Set](../../../ui/state-management/arkts-appstorage.md#装饰set类型变量)、[Date类型](../../../ui/state-management/arkts-appstorage.md#装饰date类型变量),支持null、undefined以及[联合类型](../../../ui/state-management/arkts-appstorage.md#appstorage支持联合类型)。 292 293**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 294 295**系统能力:** SystemCapability.ArkUI.ArkUI.Full 296 297**参数:** 298 299| 参数名 | 类型 | 必填 | 说明 | 300| -------- | ------ | ---- | ---------------------- | 301| propName | string | 是 | AppStorage中的属性名。 | 302| newValue | T | 是 | 属性值,从API version 12开始可以为null或undefined。 | 303 304**返回值:** 305 306| 类型 | 说明 | 307| ------- | ------------------------------------------------------------ | 308| boolean | 如果AppStorage中不存在propName对应的属性,或设值失败,则返回false。设置成功则返回true。 | 309 310**示例:** 311```ts 312AppStorage.setOrCreate('PropA', 48); 313let res: boolean = AppStorage.set('PropA', 47) // true 314let res1: boolean = AppStorage.set('PropB', 47) // false 315``` 316 317### setOrCreate<sup>10+</sup> 318 319static setOrCreate<T>(propName: string, newValue: T): void 320 321如果propName已经在[AppStorage](../../../ui/state-management/arkts-appstorage.md)中存在,并且newValue和propName对应属性的值不同,则设置propName对应属性的值为newValue,否则状态变量不会通知UI刷新propName对应属性的值。 322如果propName不存在,则创建propName属性,值为newValue。setOrCreate只可以创建单个AppStorage的键值对,如果想创建多个AppStorage键值对,可以多次调用此方法。从API version 12开始,newValue可以为null或undefined。 323 324> **说明:**<br/> 325> 从API version 12开始,AppStorage支持[Map](../../../ui/state-management/arkts-appstorage.md#装饰map类型变量)、[Set](../../../ui/state-management/arkts-appstorage.md#装饰set类型变量)、[Date类型](../../../ui/state-management/arkts-appstorage.md#装饰date类型变量),支持null、undefined以及[联合类型](../../../ui/state-management/arkts-appstorage.md#appstorage支持联合类型)。 326 327**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 328 329**系统能力:** SystemCapability.ArkUI.ArkUI.Full 330 331**参数:** 332 333| 参数名 | 类型 | 必填 | 说明 | 334| -------- | ------ | ---- | ---------------------- | 335| propName | string | 是 | AppStorage中的属性名。 | 336| newValue | T | 是 | 属性值,从API version 12开始可以为null或undefined。 | 337 338**示例:** 339```ts 340AppStorage.setOrCreate('simpleProp', 121); 341``` 342 343### delete<sup>10+</sup> 344 345static delete(propName: string): boolean 346 347在[AppStorage](../../../ui/state-management/arkts-appstorage.md)中删除propName对应的属性。 348 349在AppStorage中删除该属性的前提是必须保证该属性没有订阅者。如果有订阅者,则返回false。如果没有订阅者,则删除成功并返回true。 350 351属性的订阅者为: 352 3531. [\@StorageLink](../../../ui/state-management/arkts-appstorage.md#storagelink)、[\@StorageProp](../../../ui/state-management/arkts-appstorage.md#storageprop)装饰的变量。 354 3552. 通过[link](#link10)、[prop](#prop10)、[setAndLink](#setandlink10)、[setAndProp](#setandprop10)接口返回的[SubscribedAbstractProperty](#subscribedabstractproperty)的实例。 356 357如果想要删除这些订阅者,可以通过以下方式: 358 3591. 删除\@StorageLink、\@StorageProp所在的自定义组件。删除自定义组件请参考[自定义组件的删除](../../../ui/state-management/arkts-page-custom-components-lifecycle.md#自定义组件的删除)。 360 3612. 对link、prop、setAndLink、setAndProp接口返回的SubscribedAbstractProperty的实例调用[aboutToBeDeleted](#abouttobedeleted10)接口。 362 363**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 364 365**系统能力:** SystemCapability.ArkUI.ArkUI.Full 366 367**参数:** 368 369| 参数名 | 类型 | 必填 | 说明 | 370| -------- | ------ | ---- | ---------------- | 371| propName | string | 是 | AppStorage中的属性名。 | 372 373**返回值:** 374 375| 类型 | 说明 | 376| ------- | ---------------------------------------- | 377| boolean | 如果AppStorage中有对应的属性,且该属性已经没有订阅者,则删除成功,返回true。如果属性不存在,或者该属性还存在订阅者,则返回false。 | 378 379**示例:** 380```ts 381AppStorage.setOrCreate('PropA', 47); 382AppStorage.link<number>('PropA'); 383let res: boolean = AppStorage.delete('PropA'); // false,PropA 还存在订阅者 384 385AppStorage.setOrCreate('PropB', 48); 386let res1: boolean = AppStorage.delete('PropB'); // true,PropB 已从AppStorage成功删除 387``` 388 389### keys<sup>10+</sup> 390 391static keys(): IterableIterator<string> 392 393返回[AppStorage](../../../ui/state-management/arkts-appstorage.md)中所有的属性名。 394 395**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 396 397**系统能力:** SystemCapability.ArkUI.ArkUI.Full 398 399**返回值:** 400 401| 类型 | 说明 | 402| ------------------------------ | ------------------ | 403| IterableIterator<string> | AppStorage中所有的属性名。 | 404 405**示例:** 406```ts 407AppStorage.setOrCreate('PropB', 48); 408let keys: IterableIterator<string> = AppStorage.keys(); 409``` 410 411### clear<sup>10+</sup> 412 413static clear(): boolean 414 415删除[AppStorage](../../../ui/state-management/arkts-appstorage.md)中所有属性。删除所有属性的前提是,AppStorage已经没有任何订阅者。如果有订阅者,clear将不会生效并返回false。如果没有订阅者,则删除成功,并返回true。 416 417订阅者的含义参考[delete](#delete10)。 418 419**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 420 421**系统能力:** SystemCapability.ArkUI.ArkUI.Full 422 423**返回值:** 424 425| 类型 | 说明 | 426| ------- | ------------------------------------------------------------ | 427| boolean | 如果AppStorage中的属性已经没有订阅者则删除成功,返回true;如果当前仍有订阅者,返回false。| 428 429**示例:** 430```ts 431AppStorage.setOrCreate('PropA', 47); 432let res: boolean = AppStorage.clear(); // true,已经没有订阅者 433``` 434 435### size<sup>10+</sup> 436 437static size(): number 438 439返回[AppStorage](../../../ui/state-management/arkts-appstorage.md)中的属性数量。 440 441**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 442 443**系统能力:** SystemCapability.ArkUI.ArkUI.Full 444 445**返回值:** 446 447| 类型 | 说明 | 448| ------ | ------------------- | 449| number | 返回AppStorage中属性的数量。 | 450 451**示例:** 452```ts 453AppStorage.setOrCreate('PropB', 48); 454let res: number = AppStorage.size(); // 1 455``` 456 457### Link<sup>(deprecated)</sup> 458 459static Link(propName: string): any 460 461与[AppStorage](../../../ui/state-management/arkts-appstorage.md)中对应的propName建立双向数据绑定。如果给定的propName在AppStorage中存在,返回与AppStorage中propName对应属性的双向绑定数据。 462 463双向绑定数据的修改会同步回AppStorage中,AppStorage会将变化同步到所有绑定该propName的数据和自定义组件中。 464 465如果AppStorage中不存在propName,则返回undefined。 466 467> **说明:**<br/> 468> 从API version 7 开始支持,从API version 10 开始废弃,推荐使用[link10+](#link10)替代。 469 470**系统能力:** SystemCapability.ArkUI.ArkUI.Full 471 472**参数:** 473 474| 参数名 | 类型 | 必填 | 说明 | 475| -------- | ------ | ---- | ---------------- | 476| propName | string | 是 | AppStorage中的属性名。 | 477 478**返回值:** 479 480| 类型 | 说明 | 481| -------------------------------- | ------------------------------------------------------------ | 482| any | 返回双向绑定的数据,如果AppStorage中不存在对应的propName,则返回undefined。 | 483 484**示例:** 485```ts 486AppStorage.SetOrCreate('PropA', 47); 487let linkToPropA1: SubscribedAbstractProperty<number> = AppStorage.Link('PropA'); 488let linkToPropA2: SubscribedAbstractProperty<number> = AppStorage.Link('PropA'); // linkToPropA2.get() == 47 489linkToPropA1.set(48); // 双向同步: linkToPropA1.get() == linkToPropA2.get() == 48 490``` 491 492### SetAndLink<sup>(deprecated)</sup> 493 494static SetAndLink<T>(propName: string, defaultValue: T): SubscribedAbstractProperty<T> 495 496与[Link](#linkdeprecated)接口类似,如果给定的propName在[AppStorage](../../../ui/state-management/arkts-appstorage.md)中存在,则返回该propName对应的属性的双向绑定数据。如果不存在,则使用defaultValue在AppStorage中创建和初始化propName对应的属性,并返回其双向绑定数据。defaultValue必须为T类型,且不能为null或undefined。 497 498> **说明:**<br/> 499> 从API version 7 开始支持,从API version 10 开始废弃,推荐使用[setAndLink10+](#setandlink10)替代。 500 501**系统能力:** SystemCapability.ArkUI.ArkUI.Full 502 503**参数:** 504 505| 参数名 | 类型 | 必填 | 说明 | 506| ------------ | ------ | ---- | ------------------------------------------------------------ | 507| propName | string | 是 | AppStorage中的属性名。 | 508| defaultValue | T | 是 | 当propName在AppStorage中不存在,使用defaultValue在AppStorage中初始化对应的propName,defaultValue不能为null或undefined。 | 509 510**返回值:** 511 512| 类型 | 说明 | 513| ----------------------------------- | ---------------------------------------- | 514| [SubscribedAbstractProperty<T>](#subscribedabstractproperty) | SubscribedAbstractProperty<T>的实例,和AppStorage中propName对应属性的双向绑定的数据。 | 515 516**示例:** 517```ts 518AppStorage.SetOrCreate('PropA', 47); 519let link1: SubscribedAbstractProperty<number> = AppStorage.SetAndLink('PropB', 49); // 用默认值49创建PropB 520let link2: SubscribedAbstractProperty<number> = AppStorage.SetAndLink('PropA', 50); // PropA已存在,值为47 521``` 522 523### Prop<sup>(deprecated)</sup> 524 525static Prop(propName: string): any 526 527与[AppStorage](../../../ui/state-management/arkts-appstorage.md)中对应的propName建立单向属性绑定。如果给定的propName在AppStorage中存在,则返回与AppStorage中propName对应属性的单向绑定数据。如果AppStorage中不存在propName,则返回undefined。单向绑定数据的修改不会被同步回AppStorage中。 528 529> **说明:**<br/> 530> Prop仅支持简单类型。 531> 从API version 7 开始支持,从API version 10 开始废弃,推荐使用[prop10+](#prop10)替代。 532 533**系统能力:** SystemCapability.ArkUI.ArkUI.Full 534 535**参数:** 536 537| 参数名 | 类型 | 必填 | 说明 | 538| -------- | ------ | ---- | ---------------- | 539| propName | string | 是 | AppStorage中的属性名。 | 540 541**返回值:** 542 543| 类型 | 说明 | 544| -------------------------------- | ------------------------------------------------------------ | 545| any | 返回单向绑定的数据,如果AppStorage中不存在对应的propName,则返回undefined。 | 546 547**示例:** 548```ts 549AppStorage.SetOrCreate('PropA', 47); 550let prop1: SubscribedAbstractProperty<number> = AppStorage.Prop('PropA'); 551let prop2: SubscribedAbstractProperty<number> = AppStorage.Prop('PropA'); 552prop1.set(1); // 单向同步:prop1.get()的值为1,prop2.get()的值为47 553``` 554 555### SetAndProp<sup>(deprecated)</sup> 556 557static SetAndProp<S>(propName: string, defaultValue: S): SubscribedAbstractProperty<S> 558 559与[Prop](#propdeprecated)接口类似。如果给定的propName在[AppStorage](../../../ui/state-management/arkts-appstorage.md)中存在,则返回该propName对应的属性的单向绑定数据。如果不存在,则使用defaultValue在AppStorage中创建和初始化propName对应的属性,返回其单向绑定数据。defaultValue必须为S类型,且不能为null或undefined。 560 561> **说明:**<br/> 562> 从API version 7 开始支持,从API version 10 开始废弃,推荐使用[setAndProp10+](#setandprop10)替代。 563 564**系统能力:** SystemCapability.ArkUI.ArkUI.Full 565 566**参数:** 567 568| 参数名 | 类型 | 必填 | 说明 | 569| ------------ | ------ | ---- | ------------------------------------------------------------ | 570| propName | string | 是 | AppStorage中的属性名。 | 571| defaultValue | S | 是 | 当propName在AppStorage中不存在时,使用defaultValue在AppStorage中初始化对应的propName,defaultValue不能为null或undefined。 | 572 573**返回值:** 574 575| 类型 | 说明 | 576| ----------------------------------- | --------------------------------------- | 577| [SubscribedAbstractProperty<S>](#subscribedabstractproperty) | SubscribedAbstractProperty<S>的实例。 | 578 579**示例:** 580```ts 581AppStorage.SetOrCreate('PropA', 47); 582let prop: SubscribedAbstractProperty<number> = AppStorage.SetAndProp('PropB', 49); // PropA -> 47, PropB -> 49 583``` 584 585### Has<sup>(deprecated)</sup> 586 587static Has(propName: string): boolean 588 589判断propName对应的属性是否在[AppStorage](../../../ui/state-management/arkts-appstorage.md)中存在。 590 591> **说明:**<br/> 592> 从API version 7 开始支持,从API version 10 开始废弃,推荐使用[has10+](#has10)替代。 593 594**系统能力:** SystemCapability.ArkUI.ArkUI.Full 595 596**参数:** 597 598| 参数名 | 类型 | 必填 | 说明 | 599| -------- | ------ | ---- | ---------------- | 600| propName | string | 是 | AppStorage中的属性名。 | 601 602**返回值:** 603 604| 类型 | 说明 | 605| ------- | ---------------------------------------- | 606| boolean | 如果propName对应的属性在AppStorage中存在,则返回true。不存在则返回false。 | 607 608**示例:** 609```ts 610AppStorage.Has('simpleProp'); 611``` 612 613### Get<sup>(deprecated)</sup> 614 615static Get<T>(propName: string): T | undefined 616 617获取propName在[AppStorage](../../../ui/state-management/arkts-appstorage.md)中对应的属性值。如果不存在则返回undefined。 618 619> **说明:**<br/> 620> 从API version 7 开始支持,从API version 10 开始废弃,推荐使用[get10+](#get10)替代。 621 622**系统能力:** SystemCapability.ArkUI.ArkUI.Full 623 624**参数:** 625 626| 参数名 | 类型 | 必填 | 说明 | 627| -------- | ------ | ---- | ---------------- | 628| propName | string | 是 | AppStorage中的属性名。 | 629 630**返回值:** 631 632| 类型 | 说明 | 633| ------------------------ | ------------------------------------------------------------ | 634| T \| undefined | AppStorage中propName对应的属性值,如果不存在则返回undefined。 | 635 636**示例:** 637```ts 638AppStorage.SetOrCreate('PropA', 47); 639let value: number = AppStorage.Get('PropA') as number; // 47 640``` 641 642### Set<sup>(deprecated)</sup> 643 644static Set<T>(propName: string, newValue: T): boolean 645 646在[AppStorage](../../../ui/state-management/arkts-appstorage.md)中设置propName对应属性的值。 647 648> **说明:**<br/> 649> 从API version 7 开始支持,从API version 10 开始废弃,推荐使用[set10+](#set10)替代。 650 651**系统能力:** SystemCapability.ArkUI.ArkUI.Full 652 653**参数:** 654 655| 参数名 | 类型 | 必填 | 说明 | 656| -------- | ------ | ---- | ------------------------------- | 657| propName | string | 是 | AppStorage中的属性名。 | 658| newValue | T | 是 | 属性值,不能为null或undefined。 | 659 660**返回值:** 661 662| 类型 | 说明 | 663| ------- | ------------------------------------------------------------ | 664| boolean | 如果AppStorage中不存在propName对应的属性,或者设置的newValue是undefined或者null,返回false。设置成功则返回true。 | 665 666**示例:** 667```ts 668AppStorage.SetOrCreate('PropA', 48); 669let res: boolean = AppStorage.Set('PropA', 47) // true 670let res1: boolean = AppStorage.Set('PropB', 47) // false 671``` 672 673### SetOrCreate<sup>(deprecated)</sup> 674 675static SetOrCreate<T>(propName: string, newValue: T): void 676 677如果propName已经在[AppStorage](../../../ui/state-management/arkts-appstorage.md)中存在,则设置propName对应的属性值为newValue。如果不存在,则创建propName属性,值为newValue。 678 679newValue不能为null或undefined。 680 681> **说明:**<br/> 682> 从API version 7 开始支持,从API version 10 开始废弃,推荐使用[setOrCreate10+](#setorcreate10)替代。 683 684**系统能力:** SystemCapability.ArkUI.ArkUI.Full 685 686**参数:** 687 688| 参数名 | 类型 | 必填 | 说明 | 689| -------- | ------ | ---- | ------------------------------- | 690| propName | string | 是 | AppStorage中的属性名。 | 691| newValue | T | 是 | 属性值,不能为null或undefined。 | 692 693**示例:** 694```ts 695AppStorage.SetOrCreate('simpleProp', 121); 696``` 697 698### Delete<sup>(deprecated)</sup> 699 700static Delete(propName: string): boolean 701 702在[AppStorage](../../../ui/state-management/arkts-appstorage.md)中删除propName对应的属性。 703 704在AppStorage中删除该属性的前提是必须保证该属性没有订阅者。如果有订阅者,则返回false。如果没有订阅者则删除成功并返回true。 705 706属性的订阅者为[Link](#linkdeprecated)、[Prop](#propdeprecated)等接口绑定的propName,以及[\@StorageLink('propName')](../../../ui/state-management/arkts-appstorage.md#storagelink)和[\@StorageProp('propName')](../../../ui/state-management/arkts-appstorage.md#storageprop)。如果自定义组件中使用\@StorageLink('propName')和\@StorageProp('propName')或者SubscribedAbstractProperty实例依旧对propName有同步关系,则该属性不能从AppStorage中删除。 707 708> **说明:**<br/> 709> 从API version 7 开始支持,从API version 10 开始废弃,推荐使用[delete10+](#delete10)替代。 710 711**系统能力:** SystemCapability.ArkUI.ArkUI.Full 712 713**参数:** 714 715| 参数名 | 类型 | 必填 | 说明 | 716| -------- | ------ | ---- | ---------------- | 717| propName | string | 是 | AppStorage中的属性名。 | 718 719**返回值:** 720 721| 类型 | 说明 | 722| ------- | ---------------------------------------- | 723| boolean | 如果AppStorage中有对应的属性,且该属性已经没有订阅者,则删除成功,返回true。如果属性不存在,或者该属性还存在订阅者,则返回false。 | 724 725**示例:** 726```ts 727AppStorage.SetOrCreate('PropA', 47); 728AppStorage.Link('PropA'); 729let res: boolean = AppStorage.Delete('PropA'); // false,PropA 还存在订阅者 730 731AppStorage.SetOrCreate('PropB', 48); 732let res1: boolean = AppStorage.Delete('PropB'); // true,PropB 已从AppStorage成功删除 733``` 734 735### Keys<sup>(deprecated)</sup> 736 737static Keys(): IterableIterator<string> 738 739返回[AppStorage](../../../ui/state-management/arkts-appstorage.md)中所有的属性名。 740 741> **说明:**<br/> 742> 从API version 7 开始支持,从API version 10 开始废弃,推荐使用[keys10+](#keys10)替代。 743 744**系统能力:** SystemCapability.ArkUI.ArkUI.Full 745 746**返回值:** 747 748| 类型 | 说明 | 749| ------------------------------ | ------------------ | 750| IterableIterator<string> | AppStorage中所有的属性名。 | 751 752**示例:** 753```ts 754AppStorage.SetOrCreate('PropB', 48); 755let keys: IterableIterator<string> = AppStorage.Keys(); 756``` 757 758 759### staticClear<sup>(deprecated)</sup> 760 761static staticClear(): boolean 762 763删除所有的属性。 764 765> **说明:**<br/> 766> 从API version 7 开始支持,从API version 9 开始废弃,推荐使用[clear10+](#clear10)替代。 767 768**系统能力:** SystemCapability.ArkUI.ArkUI.Full 769 770**返回值:** 771 772| 类型 | 说明 | 773| ------- | --------------------------------- | 774| boolean | 删除所有的属性。如果删除成功,返回true;如果当前有状态变量依旧引用此属性,返回false。 | 775 776**示例:** 777```ts 778let simple = AppStorage.staticClear(); 779``` 780 781 782### Clear<sup>(deprecated)</sup> 783 784static Clear(): boolean 785 786删除[AppStorage](../../../ui/state-management/arkts-appstorage.md)中所有属性。删除所有属性的前提是,AppStorage已经没有任何订阅者。如果有订阅者,Clear将不会生效并返回false。如果没有订阅者且删除成功则返回true。 787 788订阅者的含义参考[delete](#delete10)。 789 790> **说明:**<br/> 791> 从API version 9 开始支持,从API version 10 开始废弃,推荐使用[clear10+](#clear10)替代。 792 793**系统能力:** SystemCapability.ArkUI.ArkUI.Full 794 795**返回值:** 796 797| 类型 | 说明 | 798| ------- | ------------------------------------------------------------ | 799| boolean | 如果AppStorage中的属性已经没有订阅者则删除成功,返回true。否则返回false。 | 800 801**示例:** 802```typescript 803AppStorage.SetOrCreate('PropA', 47); 804let res: boolean = AppStorage.Clear(); // true,已经没有订阅者 805``` 806 807 808### IsMutable<sup>(deprecated)</sup> 809 810static IsMutable(propName: string): boolean 811 812返回[AppStorage](../../../ui/state-management/arkts-appstorage.md)中propName对应的属性是否是可变的。 813 814> **说明:**<br/> 815> 从API version 7 开始支持,从API version 10 开始废弃。 816 817**系统能力:** SystemCapability.ArkUI.ArkUI.Full 818 819**参数:** 820 821| 参数名 | 类型 | 必填 | 说明 | 822| -------- | ------ | ---- | ---------------- | 823| propName | string | 是 | AppStorage中的属性名。 | 824 825**返回值:** 826 827| 类型 | 说明 | 828| ------- | -------------------------------- | 829| boolean | 返回AppStorage中propName对应的属性是否是可变的。当前该返回值恒为true。 | 830 831**示例:** 832```ts 833AppStorage.SetOrCreate('PropA', 47); 834let res: boolean = AppStorage.IsMutable('simpleProp'); 835``` 836 837 838### Size<sup>(deprecated)</sup> 839 840static Size(): number 841 842返回[AppStorage](../../../ui/state-management/arkts-appstorage.md)中的属性数量。 843 844> **说明:**<br/> 845> 从API version 7 开始支持,从API version 10 开始废弃,推荐使用[size10+](#size10)替代。 846 847**系统能力:** SystemCapability.ArkUI.ArkUI.Full 848 849**返回值:** 850 851| 类型 | 说明 | 852| ------ | ------------------- | 853| number | 返回AppStorage中属性的数量。 | 854 855**示例:** 856```ts 857AppStorage.SetOrCreate('PropB', 48); 858let res: number = AppStorage.Size(); // 1 859``` 860 861 862## LocalStorage<sup>9+</sup> 863 864 865LocalStorage具体UI使用说明,详见[LocalStorage(页面级UI状态存储)](../../../ui/state-management/arkts-localstorage.md) 866 867**卡片能力:** 从API version 9开始,支持在ArkTS卡片中使用。 868 869**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 870 871**系统能力:** SystemCapability.ArkUI.ArkUI.Full 872 873### constructor<sup>9+</sup> 874 875constructor(initializingProperties?: Object) 876 877创建一个新的[LocalStorage](../../../ui/state-management/arkts-localstorage.md)实例。使用Object.keys(initializingProperties)返回的属性和其数值,初始化LocalStorage实例。 878 879**卡片能力:** 从API version 9开始,该接口支持在ArkTS卡片中使用。 880 881**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 882 883**系统能力:** SystemCapability.ArkUI.ArkUI.Full 884 885**参数:** 886 887| 参数名 | 类型 | 必填 | 说明 | 888| ---------------------- | ------ | ---- | ---------------------------------------- | 889| initializingProperties | Object | 否 | 用initializingProperties包含的属性和数值初始化LocalStorage。initializingProperties不能为undefined。 | 890 891**示例:** 892```ts 893let para: Record<string, number> = { 'PropA': 47 }; 894let storage: LocalStorage = new LocalStorage(para); 895``` 896 897 898### getShared<sup>(deprecated)</sup> 899 900static getShared(): LocalStorage 901 902获取当前stage共享的[LocalStorage](../../../ui/state-management/arkts-localstorage.md)实例。 903 904> **说明:** 905> 906> 从API version 10开始支持,从API version 18开始废弃,建议使用[UIContext](../arkts-apis-uicontext-uicontext.md)中的[getSharedLocalStorage](../arkts-apis-uicontext-uicontext.md#getsharedlocalstorage12)替代。 907> 908> 从API version 12开始,可以通过使用[UIContext](../arkts-apis-uicontext-uicontext.md)中的[getSharedLocalStorage](../arkts-apis-uicontext-uicontext.md#getsharedlocalstorage12)来明确UI的执行上下文。 909 910**卡片能力:** 从API version 10开始,该接口支持在ArkTS卡片中使用。 911 912**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 913 914**系统能力:** SystemCapability.ArkUI.ArkUI.Full 915 916**模型约束:** 此接口仅可在Stage模型下使用。 917 918**返回值:** 919 920| 类型 | 说明 | 921| ------------------------------ | ----------------- | 922| [LocalStorage](#localstorage9) | 返回LocalStorage实例。 | 923 924### has<sup>9+</sup> 925 926has(propName: string): boolean 927 928判断propName对应的属性是否在[LocalStorage](../../../ui/state-management/arkts-localstorage.md)中存在。 929 930**卡片能力:** 从API version 9开始,该接口支持在ArkTS卡片中使用。 931 932**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 933 934**系统能力:** SystemCapability.ArkUI.ArkUI.Full 935 936**参数:** 937 938| 参数名 | 类型 | 必填 | 说明 | 939| -------- | ------ | ---- | ------------------ | 940| propName | string | 是 | LocalStorage中的属性名。 | 941 942**返回值:** 943 944| 类型 | 说明 | 945| ------- | ------------------------------------------------------------ | 946| boolean | 如果propName对应的属性在LocalStorage中存在,则返回true。不存在则返回false。 | 947 948**示例:** 949```ts 950let para: Record<string, number> = { 'PropA': 47 }; 951let storage: LocalStorage = new LocalStorage(para); 952storage.has('PropA'); // true 953``` 954 955 956### get<sup>9+</sup> 957 958get<T>(propName: string): T | undefined 959 960获取propName在[LocalStorage](../../../ui/state-management/arkts-localstorage.md)中对应的属性值。 961 962**卡片能力:** 从API version 9开始,该接口支持在ArkTS卡片中使用。 963 964**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 965 966**系统能力:** SystemCapability.ArkUI.ArkUI.Full 967 968**参数:** 969 970| 参数名 | 类型 | 必填 | 说明 | 971| -------- | ------ | ---- | ------------------ | 972| propName | string | 是 | LocalStorage中的属性名。 | 973 974**返回值:** 975 976| 类型 | 说明 | 977| ------------------------ | ------------------------------------------------------------ | 978| T \| undefined | LocalStorage中propName对应的属性值,如果不存在则返回undefined。 | 979 980**示例:** 981```ts 982let para: Record<string, number> = { 'PropA': 47 }; 983let storage: LocalStorage = new LocalStorage(para); 984let value: number = storage.get('PropA') as number; // 47 985``` 986 987 988### set<sup>9+</sup> 989 990set<T>(propName: string, newValue: T): boolean 991 992在[LocalStorage](../../../ui/state-management/arkts-localstorage.md)中设置propName对应属性的值。如果newValue的值和propName对应属性的值相同,即不需要做赋值操作,状态变量不会通知UI刷新propName对应属性的值。从API version 12开始,newValue可以为null或undefined。 993 994> **说明:** 995> 996> 从API version 12开始,LocalStorage支持[Map](../../../ui/state-management/arkts-localstorage.md#装饰map类型变量)、[Set](../../../ui/state-management/arkts-localstorage.md#装饰set类型变量)、[Date类型](../../../ui/state-management/arkts-localstorage.md#装饰date类型变量),支持null、undefined以及[联合类型](../../../ui/state-management/arkts-localstorage.md#localstorage支持联合类型)。 997 998**卡片能力:** 从API version 9开始,该接口支持在ArkTS卡片中使用。 999 1000**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 1001 1002**系统能力:** SystemCapability.ArkUI.ArkUI.Full 1003 1004**参数:** 1005 1006| 参数名 | 类型 | 必填 | 说明 | 1007| -------- | ------ | ---- | ----------------------- | 1008| propName | string | 是 | LocalStorage中的属性名。 | 1009| newValue | T | 是 | 属性值,从API version 12开始可以为undefined或者null。 | 1010 1011**返回值:** 1012 1013| 类型 | 说明 | 1014| ------- | ------------------------------------------------------------ | 1015| boolean | 如果LocalStorage中不存在propName对应的属性,返回false。设置成功返回true。 | 1016 1017**示例:** 1018 1019```ts 1020let para: Record<string, number> = { 'PropA': 47 }; 1021let storage: LocalStorage = new LocalStorage(para); 1022let res: boolean = storage.set('PropA', 47); // true 1023let res1: boolean = storage.set('PropB', 47); // false 1024``` 1025 1026 1027### setOrCreate<sup>9+</sup> 1028 1029setOrCreate<T>(propName: string, newValue: T): boolean 1030 1031如果propName已经在[LocalStorage](../../../ui/state-management/arkts-localstorage.md)中存在,并且newValue和propName对应属性的值不同,则设置propName对应属性的值为newValue,否则状态变量不会通知UI刷新propName对应属性的值。 1032如果propName不存在,则创建propName属性,值为newValue。setOrCreate只可以创建单个LocalStorage的键值对,如果想创建多个LocalStorage键值对,可以多次调用此方法。从API version 12开始,newValue可以为null或undefined。 1033 1034> **说明:** 1035> 1036> 从API version 12开始,LocalStorage支持[Map](../../../ui/state-management/arkts-localstorage.md#装饰map类型变量)、[Set](../../../ui/state-management/arkts-localstorage.md#装饰set类型变量)、[Date类型](../../../ui/state-management/arkts-localstorage.md#装饰date类型变量),支持null、undefined以及[联合类型](../../../ui/state-management/arkts-localstorage.md#localstorage支持联合类型)。 1037 1038**卡片能力:** 从API version 9开始,该接口支持在ArkTS卡片中使用。 1039 1040**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 1041 1042**系统能力:** SystemCapability.ArkUI.ArkUI.Full 1043 1044**参数:** 1045 1046| 参数名 | 类型 | 必填 | 说明 | 1047| -------- | ------ | ---- | ----------------------- | 1048| propName | string | 是 | LocalStorage中的属性名。 | 1049| newValue | T | 是 | 属性值,从API version 12开始可以为undefined或者null。 | 1050 1051**返回值:** 1052 1053| 类型 | 说明 | 1054| ------- | ------------------------------------------------------------ | 1055| boolean | 如果LocalStorage中存在propName,则更新其值为newValue,返回true。<br/>如果LocalStorage中不存在propName,则创建propName,并初始化其值为newValue,返回true。 | 1056 1057**示例:** 1058 1059```ts 1060let para: Record<string, number> = { 'PropA': 47 }; 1061let storage: LocalStorage = new LocalStorage(para); 1062let res: boolean = storage.setOrCreate('PropA', 121); // true 1063let res1: boolean = storage.setOrCreate('PropB', 111); // true 1064let res2: boolean = storage.setOrCreate('PropB', null); // true (API12及之后返回true,API11及之前返回false) 1065``` 1066 1067### ref<sup>12+</sup> 1068 1069ref\<T\>(propName: string): AbstractProperty\<T\> | undefined 1070 1071如果给定的propName在[LocalStorage](../../../ui/state-management/arkts-localstorage.md)中存在,则返回LocalStorage中propName对应数据的引用。否则,返回undefined。 1072 1073与[link](#link9)的功能基本一致,但不需要手动释放返回的[AbstractProperty](#abstractproperty)类型的变量。 1074 1075**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 1076 1077**系统能力:** SystemCapability.ArkUI.ArkUI.Full 1078 1079**参数:** 1080 1081| 参数名 | 类型 | 必填 | 说明 | 1082| -------- | ------ | ---- | ------------------------ | 1083| propName | string | 是 | LocalStorage中的属性名。 | 1084 1085**返回值:** 1086 1087| 类型 | 说明 | 1088| -------------------------------------- | ------------------------------------------------------------ | 1089| [AbstractProperty<T>](#abstractproperty) \| undefined | LocalStorage中propName对应属性的引用,如果LocalStorage中不存在对应的propName,则返回undefined。 | 1090 1091**示例:** 1092 1093```ts 1094let para: Record<string, number> = { 'PropA': 47 }; 1095let storage: LocalStorage = new LocalStorage(para); 1096let refToPropA1: AbstractProperty<number> | undefined = storage.ref('PropA'); 1097let refToPropA2: AbstractProperty<number> | undefined = storage.ref('PropA'); // refToPropA2.get() == 47 1098refToPropA1?.set(48); // refToPropA1.get() == refToPropA2.get() == 48 1099``` 1100 1101### setAndRef<sup>12+</sup> 1102 1103setAndRef<T>(propName: string, defaultValue: T): AbstractProperty<T> 1104 1105与[ref](#ref12-1)接口类似,如果给定的propName在[LocalStorage](../../../ui/state-management/arkts-localstorage.md)中存在,则返回LocalStorage中propName对应数据的引用。如果不存在,则使用defaultValue在LocalStorage中创建和初始化propName对应的属性,并返回其引用。defaultValue须为T类型,可以为null或undefined。 1106 1107与[setAndLink](#setandlink9)的功能基本一致,但不需要手动释放返回的[AbstractProperty](#abstractproperty)类型的变量。 1108 1109> **说明:**<br/> 1110> 从API version 12开始,LocalStorage支持[Map](../../../ui/state-management/arkts-localstorage.md#装饰map类型变量)、[Set](../../../ui/state-management/arkts-localstorage.md#装饰set类型变量)、[Date类型](../../../ui/state-management/arkts-localstorage.md#装饰date类型变量),支持null、undefined以及[联合类型](../../../ui/state-management/arkts-localstorage.md#localstorage支持联合类型)。 1111 1112**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 1113 1114**系统能力:** SystemCapability.ArkUI.ArkUI.Full 1115 1116**参数:** 1117 1118| 参数名 | 类型 | 必填 | 说明 | 1119| ------------ | ------ | ---- | ------------------------------------------------------------ | 1120| propName | string | 是 | LocalStorage中的属性名。 | 1121| defaultValue | T | 是 | 当propName在LocalStorage中不存在时,使用defaultValue在LocalStorage中初始化对应的propName,defaultValue可以为null或undefined。 | 1122 1123**返回值:** 1124 1125| 类型 | 说明 | 1126| ------------------------- | ------------------------------------------------------------ | 1127| [AbstractProperty<T>](#abstractproperty) | AbstractProperty<T>的实例,为LocalStorage中propName对应属性的引用。 | 1128 1129**示例:** 1130 1131```ts 1132let para: Record<string, number> = { 'PropA': 47 }; 1133let storage: LocalStorage = new LocalStorage(para); 1134let ref1: AbstractProperty<number> = storage.setAndRef('PropB', 49); // 用默认值49创建PropB 1135let ref2: AbstractProperty<number> = storage.setAndRef('PropA', 50); // PropA已存在,值为47 1136``` 1137 1138### link<sup>9+</sup> 1139 1140link<T>(propName: string): SubscribedAbstractProperty<T> 1141 1142如果给定的propName在[LocalStorage](../../../ui/state-management/arkts-localstorage.md)实例中存在,则返回与LocalStorage中propName对应属性的双向绑定数据。 1143 1144双向绑定数据的修改会被同步回LocalStorage中,LocalStorage会将变化同步到所有绑定该propName的数据和Component中。 1145 1146如果LocalStorage中不存在propName,则返回undefined。 1147 1148**卡片能力:** 从API version 9开始,该接口支持在ArkTS卡片中使用。 1149 1150**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 1151 1152**系统能力:** SystemCapability.ArkUI.ArkUI.Full 1153 1154**参数:** 1155 1156| 参数名 | 类型 | 必填 | 说明 | 1157| -------- | ------ | ---- | ------------------ | 1158| propName | string | 是 | LocalStorage中的属性名。 | 1159 1160**返回值:** 1161 1162| 类型 | 说明 | 1163| ----------------------------------- | ------------------------------------------------------------ | 1164| [SubscribedAbstractProperty<T>](#subscribedabstractproperty) | SubscribedAbstractProperty<T>的实例,与LocalStorage中propName对应属性的双向绑定的数据,如果LocalStorage中不存在对应的propName,则返回undefined。 | 1165 1166**示例:** 1167```ts 1168let para: Record<string, number> = { 'PropA': 47 }; 1169let storage: LocalStorage = new LocalStorage(para); 1170let linkToPropA1: SubscribedAbstractProperty<number> = storage.link('PropA'); 1171let linkToPropA2: SubscribedAbstractProperty<number> = storage.link('PropA'); // linkToPropA2.get() == 47 1172linkToPropA1.set(48); // 双向同步: linkToPropA1.get() == linkToPropA2.get() == 48 1173``` 1174 1175 1176### setAndLink<sup>9+</sup> 1177 1178setAndLink<T>(propName: string, defaultValue: T): SubscribedAbstractProperty<T> 1179 1180与[link](#link9)接口类似,如果给定的propName在[LocalStorage](../../../ui/state-management/arkts-localstorage.md)中存在,则返回该propName对应的属性的双向绑定数据。如果不存在,则使用defaultValue在LocalStorage中创建和初始化propName对应的属性,返回其双向绑定数据。defaultValue必须为T类型,从API version 12开始defaultValue可以为null或undefined。 1181 1182> **说明:** 1183> 1184> 从API version 12开始,LocalStorage支持[Map](../../../ui/state-management/arkts-localstorage.md#装饰map类型变量)、[Set](../../../ui/state-management/arkts-localstorage.md#装饰set类型变量)、[Date类型](../../../ui/state-management/arkts-localstorage.md#装饰date类型变量),支持null、undefined以及[联合类型](../../../ui/state-management/arkts-localstorage.md#localstorage支持联合类型)。 1185 1186**卡片能力:** 从API version 9开始,该接口支持在ArkTS卡片中使用。 1187 1188**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 1189 1190**系统能力:** SystemCapability.ArkUI.ArkUI.Full 1191 1192**参数:** 1193 1194| 参数名 | 类型 | 必填 | 说明 | 1195| ------------ | ------ | ---- | ------------------------------------------------------------ | 1196| propName | string | 是 | LocalStorage中的属性名。 | 1197| defaultValue | T | 是 | 当propName在LocalStorage中不存在时,使用defaultValue在LocalStorage中初始化对应的propName,从API version 12开始defaultValue可以为null或undefined。 | 1198 1199**返回值:** 1200 1201| 类型 | 说明 | 1202| ----------------------------------- | ------------------------------------------------------------ | 1203| [SubscribedAbstractProperty<T>](#subscribedabstractproperty) | SubscribedAbstractProperty<T>的实例,与LocalStorage中propName对应属性的双向绑定的数据。 | 1204 1205**示例:** 1206```ts 1207let para: Record<string, number> = { 'PropA': 47 }; 1208let storage: LocalStorage = new LocalStorage(para); 1209let link1: SubscribedAbstractProperty<number> = storage.setAndLink('PropB', 49); // 用默认值49创建PropB 1210let link2: SubscribedAbstractProperty<number> = storage.setAndLink('PropA', 50); // PropA已存在,值为47 1211``` 1212 1213 1214### prop<sup>9+</sup> 1215 1216prop<S>(propName: string): SubscribedAbstractProperty<S> 1217 1218如果给定的propName在[LocalStorage](../../../ui/state-management/arkts-localstorage.md)中存在,则返回与LocalStorage中propName对应属性的单向绑定数据。如果LocalStorage中不存在propName,则返回undefined。单向绑定数据的修改不会被同步回LocalStorage中。 1219 1220**卡片能力:** 从API version 9开始,该接口支持在ArkTS卡片中使用。 1221 1222**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 1223 1224**系统能力:** SystemCapability.ArkUI.ArkUI.Full 1225 1226**参数:** 1227 1228| 参数名 | 类型 | 必填 | 说明 | 1229| -------- | ------ | ---- | ------------------ | 1230| propName | string | 是 | LocalStorage中的属性名。 | 1231 1232**返回值:** 1233 1234| 类型 | 说明 | 1235| ----------------------------------- | ------------------------------------------------------------ | 1236| [SubscribedAbstractProperty<S>](#subscribedabstractproperty) | SubscribedAbstractProperty<S>的实例,和LocalStorage中propName对应属性的单向绑定的数据。如果LocalStorage中不存在对应的propName,则返回undefined。 | 1237 1238**示例:** 1239```ts 1240let para: Record<string, number> = { 'PropA': 47 }; 1241let storage: LocalStorage = new LocalStorage(para); 1242let prop1: SubscribedAbstractProperty<number> = storage.prop('PropA'); 1243let prop2: SubscribedAbstractProperty<number> = storage.prop('PropA'); 1244prop1.set(1); // 单向同步:prop1.get()的值为1,prop2.get()的值为47 1245``` 1246 1247 1248### setAndProp<sup>9+</sup> 1249 1250setAndProp<S>(propName: string, defaultValue: S): SubscribedAbstractProperty<S> 1251 1252与[prop](#prop9)接口类似。如果propName在[LocalStorage](../../../ui/state-management/arkts-localstorage.md)中存在,则返回该propName对应的属性的单向绑定数据。如果不存在,则使用defaultValue在LocalStorage中创建和初始化propName对应的属性,返回其单向绑定数据。defaultValue必须为S类型,从API version 12开始defaultValue可以为null或undefined。 1253 1254> **说明:** 1255> 1256> 从API version 12开始,LocalStorage支持[Map](../../../ui/state-management/arkts-localstorage.md#装饰map类型变量)、[Set](../../../ui/state-management/arkts-localstorage.md#装饰set类型变量)、[Date类型](../../../ui/state-management/arkts-localstorage.md#装饰date类型变量),支持null、undefined以及[联合类型](../../../ui/state-management/arkts-localstorage.md#localstorage支持联合类型)。 1257 1258**卡片能力:** 从API version 9开始,该接口支持在ArkTS卡片中使用。 1259 1260**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 1261 1262**系统能力:** SystemCapability.ArkUI.ArkUI.Full 1263 1264**参数:** 1265 1266| 参数名 | 类型 | 必填 | 说明 | 1267| ------------ | ------ | ---- | ------------------------------------------------------------ | 1268| propName | string | 是 | LocalStorage中的属性名。 | 1269| defaultValue | S | 是 | 当propName在LocalStorage中不存在,使用defaultValue在LocalStorage中初始化对应的propName,从API version 12开始defaultValue可以为null或undefined。 | 1270 1271**返回值:** 1272 1273| 类型 | 说明 | 1274| ----------------------------------- | ------------------------------------------------------------ | 1275| [SubscribedAbstractProperty<S>](#subscribedabstractproperty) | SubscribedAbstractProperty<S>的实例,和LocalStorage中propName对应属性的单向绑定的数据。 | 1276 1277**示例:** 1278 1279```ts 1280let para: Record<string, number> = { 'PropA': 47 }; 1281let storage: LocalStorage = new LocalStorage(para); 1282let prop: SubscribedAbstractProperty<number> = storage.setAndProp('PropB', 49); // PropA -> 47, PropB -> 49 1283``` 1284 1285 1286### delete<sup>9+</sup> 1287 1288delete(propName: string): boolean 1289 1290在[LocalStorage](../../../ui/state-management/arkts-localstorage.md)中删除propName对应的属性。在LocalStorage中删除属性的前提是该属性已经没有订阅者,如果有订阅者,则返回false。如果没有订阅者则删除成功并返回true。 1291 1292属性的订阅者为: 1293 12941. [\@LocalStorageLink](../../../ui/state-management/arkts-localstorage.md#localstoragelink)、[\@LocalStorageProp](../../../ui/state-management/arkts-localstorage.md#localstorageprop)装饰的变量。 1295 12962. 通过[link](#link9)、[prop](#prop9)、[setAndLink](#setandlink9)、[setAndProp](#setandprop9)接口返回的[SubscribedAbstractProperty](#subscribedabstractproperty)的实例。 1297 1298如果想要删除这些订阅者,可以通过以下方式: 1299 13001. 删除\@LocalStorageLink、\@LocalStorageProp所在的自定义组件。删除自定义组件请参考[自定义组件的删除](../../../ui/state-management/arkts-page-custom-components-lifecycle.md#自定义组件的删除)。 1301 13022. 对link、prop、setAndLink、setAndProp接口返回的SubscribedAbstractProperty的实例调用[aboutToBeDeleted](#abouttobedeleted10)接口。 1303 1304**卡片能力:** 从API version 9开始,该接口支持在ArkTS卡片中使用。 1305 1306**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 1307 1308**系统能力:** SystemCapability.ArkUI.ArkUI.Full 1309 1310**参数:** 1311 1312| 参数名 | 类型 | 必填 | 说明 | 1313| -------- | ------ | ---- | ------------------ | 1314| propName | string | 是 | LocalStorage中的属性名。 | 1315 1316**返回值:** 1317 1318| 类型 | 说明 | 1319| ------- | ------------------------------------------------------------ | 1320| boolean | 如果LocalStorage中有对应的属性,且该属性已经没有订阅者,则删除成功,返回true。如果属性不存在,或者该属性还存在订阅者,则返回false。 | 1321 1322**示例:** 1323```ts 1324let para: Record<string, number> = { 'PropA': 47 }; 1325let storage: LocalStorage = new LocalStorage(para); 1326storage.link<number>('PropA'); 1327let res: boolean = storage.delete('PropA'); // false,PropA 还存在订阅者 1328let res1: boolean = storage.delete('PropB'); // false,PropB 不存在于storage中 1329storage.setOrCreate('PropB', 48); 1330let res2: boolean = storage.delete('PropB'); // true,PropB 已从storage成功删除 1331``` 1332 1333 1334### keys<sup>9+</sup> 1335 1336keys(): IterableIterator<string> 1337 1338返回[LocalStorage](../../../ui/state-management/arkts-localstorage.md)中所有的属性名。 1339 1340**卡片能力:** 从API version 9开始,该接口支持在ArkTS卡片中使用。 1341 1342**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 1343 1344**系统能力:** SystemCapability.ArkUI.ArkUI.Full 1345 1346**返回值:** 1347 1348| 类型 | 说明 | 1349| ------------------------------ | -------------------- | 1350| IterableIterator<string> | LocalStorage中所有的属性名。 | 1351 1352**示例:** 1353```ts 1354let para: Record<string, number> = { 'PropA': 47 }; 1355let storage: LocalStorage = new LocalStorage(para); 1356let keys: IterableIterator<string> = storage.keys(); 1357``` 1358 1359 1360### size<sup>9+</sup> 1361 1362size(): number 1363 1364返回[LocalStorage](../../../ui/state-management/arkts-localstorage.md)中的属性数量。 1365 1366**卡片能力:** 从API version 9开始,该接口支持在ArkTS卡片中使用。 1367 1368**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 1369 1370**系统能力:** SystemCapability.ArkUI.ArkUI.Full 1371 1372**返回值:** 1373 1374| 类型 | 说明 | 1375| ------ | ---------------------------- | 1376| number | LocalStorage中属性的数量。 | 1377 1378**示例:** 1379```ts 1380let para: Record<string, number> = { 'PropA': 47 }; 1381let storage: LocalStorage = new LocalStorage(para); 1382let res: number = storage.size(); // 1 1383``` 1384 1385 1386### clear<sup>9+</sup> 1387 1388clear(): boolean 1389 1390删除[LocalStorage](../../../ui/state-management/arkts-localstorage.md)中所有的属性。删除所有属性的前提是已经没有任何订阅者。如果有订阅者,clear不会生效并返回false。如果没有订阅者则删除成功并返回true。 1391 1392订阅者的含义参考[delete](#delete9)。 1393 1394**卡片能力:** 从API version 9开始,该接口支持在ArkTS卡片中使用。 1395 1396**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 1397 1398**系统能力:** SystemCapability.ArkUI.ArkUI.Full 1399 1400**返回值:** 1401 1402 1403| 类型 | 说明 | 1404| ------- | ------------------------------------------------------------ | 1405| boolean | 如果LocalStorage中的属性已经没有任何订阅者,则删除成功,并返回true。否则返回false。 | 1406 1407 1408**示例:** 1409```ts 1410let para: Record<string, number> = { 'PropA': 47 }; 1411let storage: LocalStorage = new LocalStorage(para); 1412let res: boolean = storage.clear(); // true,已经没有订阅者 1413``` 1414 1415 1416### GetShared<sup>(deprecated)</sup> 1417 1418static GetShared(): LocalStorage 1419 1420获取当前stage共享的[LocalStorage](../../../ui/state-management/arkts-localstorage.md)实例。 1421 1422> **说明:** 1423> 1424> 从API version 10开始废弃,建议使用[UIContext](../arkts-apis-uicontext-uicontext.md)中的[getSharedLocalStorage](../arkts-apis-uicontext-uicontext.md#getsharedlocalstorage12)替代。 1425 1426**卡片能力:** 从API version 9开始,该接口支持在ArkTS卡片中使用。 1427 1428**系统能力:** SystemCapability.ArkUI.ArkUI.Full 1429 1430**模型约束:** 此接口仅可在Stage模型下使用。 1431 1432**返回值:** 1433 1434| 类型 | 说明 | 1435| ------------------------------ | ----------------- | 1436| [LocalStorage](#localstorage9) | 返回LocalStorage实例。 | 1437 1438**示例:** 1439```ts 1440let storage: LocalStorage = LocalStorage.GetShared(); 1441``` 1442 1443## AbstractProperty 1444 1445**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 1446 1447**系统能力:** SystemCapability.ArkUI.ArkUI.Full 1448 1449### get<sup>12+</sup> 1450 1451get(): T 1452 1453读取[AppStorage](../../../ui/state-management/arkts-appstorage.md)/[LocalStorage](../../../ui/state-management/arkts-localstorage.md)中所引用属性的数据。 1454 1455**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 1456 1457**系统能力:** SystemCapability.ArkUI.ArkUI.Full 1458 1459**返回值:** 1460 1461| 类型 | 说明 | 1462| ---- | ------------------------------------------- | 1463| T | AppStorage/LocalStorage中所引用属性的数据。 | 1464 1465**示例:** 1466 1467```ts 1468AppStorage.setOrCreate('PropA', 47); 1469let ref1: AbstractProperty<number> | undefined = AppStorage.ref('PropA'); 1470ref1?.get(); // ref1.get()=47 1471``` 1472 1473 1474### set<sup>12+</sup> 1475 1476set(newValue: T): void 1477 1478更新[AppStorage](../../../ui/state-management/arkts-appstorage.md)/[LocalStorage](../../../ui/state-management/arkts-localstorage.md)中所引用属性的数据,newValue必须是T类型,可以为null或undefined。 1479 1480> **说明:**<br/> 1481> 1482> 从API version 12开始,AppStorage/LocalStorage支持Map、Set、Date类型,支持null、undefined以及联合类型。 1483 1484**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 1485 1486**系统能力:** SystemCapability.ArkUI.ArkUI.Full 1487 1488 1489**参数:** 1490 1491 1492| 参数名 | 类型 | 必填 | 说明 | 1493| -------- | ---- | ---- | ------------------------------------- | 1494| newValue | T | 是 | 要更新的数据,可以为null或undefined。 | 1495 1496 1497**示例:** 1498 1499```ts 1500AppStorage.setOrCreate('PropA', 47); 1501let ref1: AbstractProperty<number> | undefined = AppStorage.ref('PropA'); 1502ref1?.set(1); // ref1.get()=1 1503let a: Map<string, number> = new Map([['1', 0]]); 1504let ref2 = AppStorage.setAndRef('MapA', a); 1505ref2.set(a); 1506let b: Set<string> = new Set('1'); 1507let ref3 = AppStorage.setAndRef('SetB', b); 1508ref3.set(b); 1509let c: Date = new Date('2024'); 1510let ref4 = AppStorage.setAndRef('DateC', c); 1511ref4.set(c); 1512ref2.set(null); 1513ref3.set(undefined); 1514``` 1515 1516### info<sup>12+</sup> 1517 1518info(): string 1519 1520读取[AppStorage](../../../ui/state-management/arkts-appstorage.md)/[LocalStorage](../../../ui/state-management/arkts-localstorage.md)中所引用属性的属性名。 1521 1522**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 1523 1524**系统能力:** SystemCapability.ArkUI.ArkUI.Full 1525 1526**返回值:** 1527 1528| 类型 | 说明 | 1529| ------ | --------------------------------------------- | 1530| string | AppStorage/LocalStorage中所引用属性的属性名。 | 1531 1532**示例:** 1533 1534```ts 1535AppStorage.setOrCreate('PropA', 47); 1536let ref1: AbstractProperty<number> | undefined = AppStorage.ref('PropA'); 1537ref1?.info(); // ref1.info()='PropA' 1538``` 1539 1540## SubscribedAbstractProperty 1541 1542**卡片能力:** 从API version 9开始,该接口支持在ArkTS卡片中使用。 1543 1544**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 1545 1546**系统能力:** SystemCapability.ArkUI.ArkUI.Full 1547 1548### get<sup>9+</sup> 1549 1550abstract get(): T 1551 1552读取从[AppStorage](../../../ui/state-management/arkts-appstorage.md)/[LocalStorage](../../../ui/state-management/arkts-localstorage.md)同步属性的数据。 1553 1554**卡片能力:** 从API version 9开始,该接口支持在ArkTS卡片中使用。 1555 1556**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 1557 1558**系统能力:** SystemCapability.ArkUI.ArkUI.Full 1559 1560**返回值:** 1561 1562| 类型 | 说明 | 1563| ---- | ------------------------------- | 1564| T | AppStorage/LocalStorage同步属性的数据。 | 1565 1566**示例:** 1567```ts 1568AppStorage.setOrCreate('PropA', 47); 1569let prop1: SubscribedAbstractProperty<number> = AppStorage.prop('PropA'); 1570prop1.get(); // prop1.get()=47 1571``` 1572 1573 1574### set<sup>9+</sup> 1575 1576abstract set(newValue: T): void 1577 1578设置[AppStorage](../../../ui/state-management/arkts-appstorage.md)/[LocalStorage](../../../ui/state-management/arkts-localstorage.md)同步属性的数据,newValue必须是T类型,从API version 12开始可以为null或undefined。 1579 1580> **说明:** 1581> 1582>从API version 12开始,AppStorage/LocalStorage支持Map、Set、Date类型,支持null、undefined以及联合类型。 1583 1584**卡片能力:** 从API version 9开始,该接口支持在ArkTS卡片中使用。 1585 1586**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 1587 1588**系统能力:** SystemCapability.ArkUI.ArkUI.Full 1589 1590 1591**参数:** 1592 1593 1594| 参数名 | 类型 | 必填 | 说明 | 1595| -------- | ---- | ---- | --------------------------------------------------------- | 1596| newValue | T | 是 | 要设置的数据,从API version 12开始可以为null或undefined。 | 1597 1598 1599**示例:** 1600```ts 1601AppStorage.setOrCreate('PropA', 47); 1602let prop1: SubscribedAbstractProperty<number> = AppStorage.prop('PropA'); 1603prop1.set(1); // prop1.get()=1 1604// 从API12开始支持Map、Set、Date类型,支持null、undefined以及联合类型。 1605let a: Map<string, number> = new Map([['1', 0]]); 1606let prop2 = AppStorage.setAndProp('MapA', a); 1607prop2.set(a); 1608let b: Set<string> = new Set('1'); 1609let prop3 = AppStorage.setAndProp('SetB', b); 1610prop3.set(b); 1611let c: Date = new Date('2024'); 1612let prop4 = AppStorage.setAndProp('DateC', c); 1613prop4.set(c); 1614prop2.set(null); 1615prop3.set(undefined); 1616``` 1617 1618### aboutToBeDeleted<sup>10+</sup> 1619 1620abstract aboutToBeDeleted(): void 1621 1622取消[SubscribedAbstractProperty](#subscribedabstractproperty)实例对[AppStorage](../../../ui/state-management/arkts-appstorage.md)/[LocalStorage](../../../ui/state-management/arkts-localstorage.md)的单/双向同步关系,并无效化SubscribedAbstractProperty实例,即当调用aboutToBeDeleted方法之后不能再使用SubscribedAbstractProperty实例调用[set](#set9-1)或[get](#get9-1)方法。 1623 1624**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 1625 1626**系统能力:** SystemCapability.ArkUI.ArkUI.Full 1627 1628**示例:** 1629```ts 1630AppStorage.setOrCreate('PropA', 47); 1631let link = AppStorage.setAndLink('PropB', 49); // PropA -> 47, PropB -> 49 1632link.aboutToBeDeleted(); 1633``` 1634 1635### info<sup>10+</sup> 1636 1637info(): string 1638 1639返回属性名称。 1640 1641**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 1642 1643**系统能力:** SystemCapability.ArkUI.ArkUI.Full 1644 1645**返回值:** 1646 1647|类型 |说明 | 1648|---------|-------------| 1649|string |属性名称。 | 1650 1651## PersistPropsOptions<sup>10+</sup> 1652 1653用于指定持久化属性及其默认值的键值对对象,作为[persistProps](#persistprops10)参数传入。 1654 1655**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 1656 1657**系统能力:** SystemCapability.ArkUI.ArkUI.Full 1658 1659| 名称 | 类型 | 必填 | 说明 | 1660| ------------ | ------------------------------------- | ---- | ------------------------------------------------------------ | 1661| key | string | 是 | 属性名。 | 1662| defaultValue | number \| string \| boolean \| Object | 是 | 在PersistentStorage和AppStorage未查询到时,则使用默认值初始化它。从API version 12开始,defaultValue允许为null或undefined。 | 1663 1664## PersistentStorage 1665 1666**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 1667 1668**系统能力:** SystemCapability.ArkUI.ArkUI.Full 1669 1670PersistentStorage具体UI使用说明,详见[PersistentStorage(持久化存储UI状态)](../../../ui/state-management/arkts-persiststorage.md) 1671 1672> **说明:**<br/> 1673> 从API version 12开始,PersistentStorage支持null、undefined。 1674 1675### persistProp<sup>10+</sup> 1676 1677static persistProp<T>(key: string, defaultValue: T): void 1678 1679将[AppStorage](../../../ui/state-management/arkts-appstorage.md)中key对应的属性持久化到文件中。该接口的调用通常在访问AppStorage之前。 1680 1681确定属性的类型和值的顺序如下: 1682 16831. 如果[PersistentStorage](../../../ui/state-management/arkts-persiststorage.md)文件中存在key对应的属性,在AppStorage中创建对应的propName,并用在PersistentStorage中找到的key的属性初始化。 1684 16852. 如果PersistentStorage文件中没有查询到key对应的属性,则在AppStorage中查找key对应的属性。如果找到key对应的属性,则将该属性持久化。 1686 16873. 如果AppStorage中也没查找到key对应的属性,则在AppStorage中创建key对应的属性。用defaultValue初始化其值,并将该属性持久化。 1688 1689根据上述的初始化流程,如果AppStorage中有该属性,则会使用其值,覆盖掉PersistentStorage文件中的值。由于AppStorage是内存内数据,该行为会导致数据丧失持久化能力。 1690 1691**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 1692 1693**系统能力:** SystemCapability.ArkUI.ArkUI.Full 1694 1695**参数:** 1696 1697| 参数名 | 类型 | 必填 | 说明 | 1698| ------------ | ------ | ---- | ------------------------------------------------------------ | 1699| key | string | 是 | 属性名。 | 1700| defaultValue | T | 是 | 在PersistentStorage和AppStorage中未查询到时,则使用默认值进行初始化。从API version 12开始允许为null或undefined。 | 1701 1702 1703**示例:** 1704 1705 1706persistProp具体使用,见[从AppStorage中访问PersistentStorage初始化的属性](../../../ui/state-management/arkts-persiststorage.md#从appstorage中访问persistentstorage初始化的属性) 1707 1708 1709### deleteProp<sup>10+</sup> 1710 1711static deleteProp(key: string): void 1712 1713[persistProp](#persistprop10)的逆向操作。将key对应的属性从PersistentStorage中删除,后续[AppStorage](../../../ui/state-management/arkts-appstorage.md)的操作,对[PersistentStorage](../../../ui/state-management/arkts-persiststorage.md)不会再有影响。该操作会将对应的key从持久化文件中删除,如果希望再次持久化,可以再次调用[persistProp](#persistprop10)接口。 1714 1715**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 1716 1717**系统能力:** SystemCapability.ArkUI.ArkUI.Full 1718 1719**参数:** 1720 1721| 参数名 | 类型 | 必填 | 说明 | 1722| ---- | ------ | ---- | ----------------------- | 1723| key | string | 是 | PersistentStorage中的属性名。 | 1724 1725**示例:** 1726```ts 1727PersistentStorage.deleteProp('highScore'); 1728``` 1729 1730 1731### persistProps<sup>10+</sup> 1732 1733static persistProps(props: PersistPropsOptions[]): void 1734 1735行为和[persistProp](#persistprop10)类似,不同在于可以一次性持久化多个数据,适合在应用启动的时候初始化。 1736 1737**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 1738 1739**系统能力:** SystemCapability.ArkUI.ArkUI.Full 1740 1741**参数:** 1742 1743| 参数名 | 类型 | 必填 | 说明 | 1744| ---------- | ---------------------------------------- | ---- | ---------------------------------------- | 1745| props | [PersistPropsOptions](#persistpropsoptions10)[] | 是 | 持久化数组。 | 1746 1747**示例:** 1748```ts 1749PersistentStorage.persistProps([{ key: 'highScore', defaultValue: '0' }, { key: 'wightScore', defaultValue: '1' }]); 1750``` 1751 1752 1753### keys<sup>10+</sup> 1754 1755static keys(): Array<string> 1756 1757返回所有持久化属性的属性名的数组。 1758 1759**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 1760 1761**系统能力:** SystemCapability.ArkUI.ArkUI.Full 1762 1763**返回值:** 1764 1765| 类型 | 说明 | 1766| ------------------- | ---------------------------------- | 1767| Array<string> | 返回所有持久化属性的属性名的数组。 | 1768 1769**示例:** 1770```ts 1771let keys: Array<string> = PersistentStorage.keys(); 1772``` 1773 1774 1775### PersistProp<sup>(deprecated)</sup> 1776 1777static PersistProp<T>(key: string, defaultValue: T): void 1778 1779将[AppStorage](../../../ui/state-management/arkts-appstorage.md)中key对应的属性持久化到文件中。该接口的调用通常在访问AppStorage之前。 1780 1781确定属性的类型和值的顺序如下: 1782 17831. 如果[PersistentStorage](../../../ui/state-management/arkts-persiststorage.md)文件中存在key对应的属性,在AppStorage中创建对应的propName,并用在PersistentStorage中找到的key的属性初始化。 1784 17852. 如果PersistentStorage文件中没有查询到key对应的属性,则在AppStorage中查找key对应的属性。如果找到key对应的属性,则将该属性持久化。 1786 17873. 如果AppStorage也没查找到key对应的属性,则在AppStorage中创建key对应的属性。用defaultValue初始化其值,并将该属性持久化。 1788 1789根据上述的初始化流程,如果AppStorage中有该属性,则会使用其值,覆盖掉PersistentStorage文件中的值。由于AppStorage是内存内数据,该行为会导致数据丧失持久化能力。 1790 1791 1792> **说明:**<br/> 1793> 从API version 10开始废弃,推荐使用[persistProp10+](#persistprop10)替代。 1794 1795**系统能力:** SystemCapability.ArkUI.ArkUI.Full 1796 1797**参数:** 1798 1799| 参数名 | 类型 | 必填 | 说明 | 1800| ------------ | ------ | ---- | ------------------------------------------------------------ | 1801| key | string | 是 | 属性名。 | 1802| defaultValue | T | 是 | 在PersistentStorage和AppStorage中未查询到时,则使用默认值进行初始化。不允许为null或undefined。 | 1803 1804 1805**示例:** 1806 1807 1808```ts 1809PersistentStorage.PersistProp('highScore', '0'); 1810``` 1811 1812 1813### DeleteProp<sup>(deprecated)</sup> 1814 1815static DeleteProp(key: string): void 1816 1817[PersistProp](#persistpropdeprecated)的逆向操作。将key对应的属性从[PersistentStorage](../../../ui/state-management/arkts-persiststorage.md)中删除,后续[AppStorage](../../../ui/state-management/arkts-appstorage.md)的操作,对PersistentStorage不会再有影响。 1818 1819 1820> **说明:**<br/> 1821> 从API version 10开始废弃,推荐使用[deleteProp10+](#deleteprop10)替代。 1822 1823**系统能力:** SystemCapability.ArkUI.ArkUI.Full 1824 1825**参数:** 1826 1827| 参数名 | 类型 | 必填 | 说明 | 1828| ---- | ------ | ---- | ----------------------- | 1829| key | string | 是 | PersistentStorage中的属性名。 | 1830 1831**示例:** 1832```ts 1833PersistentStorage.DeleteProp('highScore'); 1834``` 1835 1836 1837### PersistProps<sup>(deprecated)</sup> 1838 1839static PersistProps(properties: {key: string; defaultValue: any;}[]): void 1840 1841行为和[PersistProp](#persistpropdeprecated)类似,不同在于可以一次性持久化多个数据,适合在应用启动的时候初始化。 1842 1843> **说明:**<br/> 1844> 从API version 10开始废弃,推荐使用[persistProps10+](#persistprops10)替代。 1845 1846**系统能力:** SystemCapability.ArkUI.ArkUI.Full 1847 1848**参数:** 1849 1850| 参数名 | 类型 | 必填 | 说明 | 1851| ---------- | ---------------------------------- | ---- | ------------------------------------------------------------ | 1852| properties | {key: string; defaultValue: any}[] | 是 | 持久化数组,启动key为属性名,defaultValue为默认值。规则同PersistProp。 | 1853 1854**示例:** 1855 1856```ts 1857PersistentStorage.PersistProps([{ key: 'highScore', defaultValue: '0' }, { key: 'wightScore', defaultValue: '1' }]); 1858``` 1859 1860### Keys<sup>(deprecated)</sup> 1861 1862static Keys(): Array<string> 1863 1864返回所有持久化属性的属性名的数组。 1865 1866> **说明:**<br/> 1867> 从API version 10开始废弃,推荐使用[keys10+](#keys10-1)替代。 1868 1869**系统能力:** SystemCapability.ArkUI.ArkUI.Full 1870 1871**返回值:** 1872 1873| 类型 | 说明 | 1874| ------------------- | ---------------------------------- | 1875| Array<string> | 返回所有持久化属性的属性名的数组。 | 1876 1877**示例:** 1878```ts 1879let keys: Array<string> = PersistentStorage.Keys(); 1880``` 1881## EnvPropsOptions<sup>10+</sup> 1882 1883用于指定环境变量名称及其默认值的键值对对象,作为[envProps](#envprops10)参数传入。 1884 1885**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 1886 1887**系统能力:** SystemCapability.ArkUI.ArkUI.Full 1888 1889| 名称 | 类型 | 必填 | 说明 | 1890| ------------ | --------------------------- | ---- | ------------------------------------------------------------ | 1891| key | string | 是 | 环境变量名称,支持的范围详见[内置环境变量说明](#内置环境变量说明)。 | 1892| defaultValue | number \| string \| boolean | 是 | 查询不到环境变量key,则使用defaultValue作为默认值存入AppStorage中。 | 1893 1894## Environment 1895 1896Environment具体使用说明,详见[Environment(设备环境查询)](../../../ui/state-management/arkts-environment.md) 1897 1898**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 1899 1900**系统能力:** SystemCapability.ArkUI.ArkUI.Full 1901 1902### envProp<sup>10+</sup> 1903 1904static envProp<S>(key: string, value: S): boolean 1905 1906将[Environment](../../../ui/state-management/arkts-environment.md)的内置环境变量key存入[AppStorage](../../../ui/state-management/arkts-appstorage.md)中。如果系统中未查询到Environment环境变量key的值,则使用默认值value,存入成功,返回true。如果AppStorage中已经有对应的key,则返回false。 1907 1908所以建议在程序启动的时候调用该接口。 1909 1910在没有调用envProp的情况下,就使用AppStorage读取环境变量是错误的。 1911 1912**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 1913 1914**系统能力:** SystemCapability.ArkUI.ArkUI.Full 1915 1916**参数:** 1917 1918| 参数名 | 类型 | 必填 | 说明 | 1919| ------ | ------ | ---- | ------------------------------------------------------------ | 1920| key | string | 是 | 环境变量名称,支持的范围详见[内置环境变量说明](#内置环境变量说明)。 | 1921| value | S | 是 | 查询不到环境变量key时,则使用value作为默认值存入AppStorage中。 | 1922 1923**返回值:** 1924 1925| 类型 | 说明 | 1926| ------- | ------------------------------------------------------------ | 1927| boolean | 如果key对应的属性在AppStorage中存在,则返回false。不存在则在AppStorage中用value作为默认值创建key对应的属性,返回true。 | 1928 1929**示例:** 1930 1931envProp具体使用,详见[从UI中访问Environment参数](../../../ui/state-management/arkts-environment.md#从ui中访问environment参数)。 1932 1933 1934### envProps<sup>10+</sup> 1935 1936static envProps(props: EnvPropsOptions[]): void 1937 1938和[envProp](#envprop10)类似,不同点在于参数为数组,可以一次性初始化多个数据。建议在应用启动时调用,将系统环境变量批量存入[AppStorage](../../../ui/state-management/arkts-appstorage.md)中。 1939 1940**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 1941 1942**系统能力:** SystemCapability.ArkUI.ArkUI.Full 1943 1944**参数:** 1945 1946| 参数名 | 类型 | 必填 | 说明 | 1947| ------ | --------------------------------------------- | ---- | ------------------------------------ | 1948| props | [EnvPropsOptions](#envpropsoptions10)[] | 是 | 系统环境变量和默认值的键值对的数组。 | 1949 1950**示例:** 1951```ts 1952Environment.envProps([{ key: 'accessibilityEnabled', defaultValue: 'default' }, { 1953 key: 'languageCode', 1954 defaultValue: 'en' 1955}, { key: 'prop', defaultValue: 'hhhh' }]); 1956``` 1957 1958 1959### keys<sup>10+</sup> 1960 1961static keys(): Array<string> 1962 1963返回环境变量的属性key的数组。 1964 1965**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 1966 1967**系统能力:** SystemCapability.ArkUI.ArkUI.Full 1968 1969**返回值:** 1970 1971| 类型 | 说明 | 1972| ------------------- | ----------- | 1973| Array<string> | 返回关联的系统项数组。 | 1974 1975**示例:** 1976```ts 1977Environment.envProps([{ key: 'accessibilityEnabled', defaultValue: 'default' }, { 1978 key: 'languageCode', 1979 defaultValue: 'en' 1980}, { key: 'prop', defaultValue: 'hhhh' }]); 1981 1982let keys: Array<string> = Environment.keys(); // keys 包含 accessibilityEnabled,languageCode,prop 1983``` 1984 1985 1986### EnvProp<sup>(deprecated)</sup> 1987 1988static EnvProp<S>(key: string, value: S): boolean 1989 1990将[Environment](../../../ui/state-management/arkts-environment.md)的内置环境变量key存入[AppStorage](../../../ui/state-management/arkts-appstorage.md)中。如果系统中未查询到Environment环境变量key的值,则使用默认值value,存入成功,返回true。如果AppStorage中已经有对应的key,则返回false。 1991 1992所以建议在程序启动的时候调用该接口。 1993 1994在没有调用EnvProp的情况下,就使用AppStorage读取环境变量是错误的。 1995 1996> **说明:**<br/> 1997> 从API version 10开始废弃,推荐使用[envProp10+](#envprop10)替代。 1998 1999**系统能力:** SystemCapability.ArkUI.ArkUI.Full 2000 2001**参数:** 2002 2003| 参数名 | 类型 | 必填 | 说明 | 2004| ------ | ------ | ---- | ------------------------------------------------------------ | 2005| key | string | 是 | 环境变量名称,支持的范围详见[内置环境变量说明](#内置环境变量说明)。 | 2006| value | S | 是 | 查询不到环境变量key,则使用value作为默认值存入AppStorage中。 | 2007 2008**返回值:** 2009 2010| 类型 | 说明 | 2011| ------- | ------------------------------------------------------------ | 2012| boolean | 如果key对应的属性在AppStorage中存在,则返回false。不存在则在AppStorage中用value作为默认值创建key对应的属性,返回true。 | 2013 2014**示例:** 2015 2016 2017```ts 2018Environment.EnvProp('accessibilityEnabled', 'default'); 2019``` 2020 2021 2022### EnvProps<sup>(deprecated)</sup> 2023 2024static EnvProps(props: {key: string; defaultValue: any;}[]): void 2025 2026和[EnvProp](#envpropdeprecated)类似,不同点在于参数为数组,可以一次性初始化多个数据。建议在应用启动时调用,将系统环境变量批量存入[AppStorage](../../../ui/state-management/arkts-appstorage.md)中。 2027 2028> **说明:**<br/> 2029> 从API version 10开始废弃,推荐使用[envProps10+](#envprops10)替代。 2030 2031**系统能力:** SystemCapability.ArkUI.ArkUI.Full 2032 2033**参数:** 2034 2035| 参数名 | 类型 | 必填 | 说明 | 2036| ------ | ------------------------------------------------- | ---- | ------------------------------------ | 2037| props | {key: string; defaultValue: any}[] | 是 | 系统环境变量和默认值的键值对的数组。 | 2038 2039**示例:** 2040```ts 2041Environment.EnvProps([{ key: 'accessibilityEnabled', defaultValue: 'default' }, { 2042 key: 'languageCode', 2043 defaultValue: 'en' 2044}, { key: 'prop', defaultValue: 'hhhh' }]); 2045``` 2046 2047 2048### Keys<sup>(deprecated)</sup> 2049 2050static Keys(): Array<string> 2051 2052返回环境变量的属性key的数组。 2053 2054> **说明:**<br/> 2055> 从API version 10开始废弃,推荐使用[keys10+](#keys10-2)替代。 2056 2057**系统能力:** SystemCapability.ArkUI.ArkUI.Full 2058 2059**返回值:** 2060 2061| 类型 | 说明 | 2062| ------------------- | ----------- | 2063| Array<string> | 返回关联的系统项数组。 | 2064 2065**示例:** 2066 2067```ts 2068Environment.EnvProps([{ key: 'accessibilityEnabled', defaultValue: 'default' }, { 2069 key: 'languageCode', 2070 defaultValue: 'en' 2071}, { key: 'prop', defaultValue: 'hhhh' }]); 2072 2073let keys: Array<string> = Environment.Keys(); // keys 包含 accessibilityEnabled,languageCode,prop 2074``` 2075 2076 2077## 内置环境变量说明 2078 2079| key | 类型 | 说明 | 2080| -------------------- | --------------- | ------------------------------------------------------------ | 2081| accessibilityEnabled | string | 无障碍屏幕朗读是否启用。当无法获取环境变量中的accessibilityEnabled的值时,将通过envProp、envProps等接口传入的开发者指定的默认值添加到AppStorage中。 | 2082| colorMode | [ColorMode](./ts-state-management-environment-variables.md#colormode) | 深浅色模式,可选值为:<br/>- ColorMode.LIGHT:浅色模式;<br/>- ColorMode.DARK:深色模式。 | 2083| fontScale | number | 字体大小比例。 | 2084| fontWeightScale | number | 字重比例。 | 2085| layoutDirection | [LayoutDirection](./ts-state-management-environment-variables.md#layoutdirection) | 布局方向类型,可选值为:<br/>- LayoutDirection.LTR:从左到右;<br/>- LayoutDirection.RTL:从右到左。<br/>- Auto:跟随系统。 | 2086| languageCode | string | 当前系统语言,小写字母,例如zh。 |