HarmonyOS API:应用级变量的状态管理

joytrian
发布于 2023-3-27 17:49
浏览
0收藏

版本:v3.1 Beta

应用级变量的状态管理

更新时间: 2023-02-17 09:19


状态管理模块提供了应用程序的数据存储能力、持久化数据管理能力、Ability数据存储能力和应用程序需要的环境状态。


说明

本模块首批接口从API version 7开始支持,后续版本的新增接口,采用上角标单独标记接口的起始版本。

AppStorage

static Link(propName: string): any

与AppStorage中对应的propName建立双向数据绑定。

参数:

参数名

类型

必填

参数描述

propName

string

要双向绑定的属性名称。

返回值:

类型

描述

any

在具有给定键的数据,则返回到此属性的双向数据绑定,该双向绑定意味着变量或者组件对数据的更改将同步到AppStorage,通过AppStorage对数据的修改将同步到变量或者组件。

AppStorage.SetOrCreate("PropA", 47); 
let linkToPropA1 = AppStorage.Link("PropA"); 
var linkToPropA2  = AppStorage.Link("PropA");       // linkToPropA2.get() == 47
linkToPropA1.set(48);      // 双向同步: linkToPropA1.get() == linkToPropA2.get() == 48

static SetAndLink<T>(propName: string, defaultValue: T): SubscribedAbstractProperty<T>

与Link接口类似,如果当前的key保存于AppStorage,则返回该key对应的value。如果该key未被创建,则创建一个对应default值的Link返回。

参数:

参数名

类型

必填

参数描述

propName

string

要进行创建的key值。

defaultValue

T

要进行设置的默认值。

返回值:

类型

描述

SubscribedAbstractProperty<T>

与Link接口类似,如果当前的key保存于AppStorage,返回该key值对应的value值。如果该key值未被创建,则创建一个对应的defaultValue的Link返回。

AppStorage.SetOrCreate("PropA", 47); 
var link1 = AppStorage.SetAndLink("PropB", 49);   // Create PropB 49 
var link2 = AppStorage.SetAndLink("PropA", 49); // PropA exists, remains 47

Prop

static Prop(propName: string): any

与AppStorage中对应的propName建立单向属性绑定。

参数:

参数名

类型

必填

参数描述

propName

string

要进行创建的key值。

返回值:

类型

描述

any

与@Prop接口类似。如果存在具有给定键的属性,则返回此属性的单向数据绑定。该单向绑定意味着只能通过AppStorage将属性的更改同步到变量或者组件。该方法返回的变量为不可变变量,适用于可变和不可变的状态属性,如果具有此键的属性不存在则返回undefined。

AppStorage.SetOrCreate("PropA", 47); 
var prop1 = AppStorage.Prop("PropA");   
var prop2 = AppStorage.Prop("PropA"); 
prop1.set(1);        // one-way sync: prop1.get()=1; but prop2.get() == 47

SetAndProp

static SetAndProp<S>(propName: string, defaultValue: S): SubscribedAbstractProperty<S>

与Prop接口类似,如果当前的key保存于AppStorage,则返回该key对应的value。如果该key未被创建,则创建一个对应default值的Prop返回。

参数:

参数名

类型

必填

参数描述

propName

string

要保存的的键值对中的key值。

defaultValue

S

创建的默认值。

返回值:

类型

描述

SubscribedAbstractProperty<S>

与@Prop接口类似。如果当前的key保存与AppStorage,返回该key值对应的value值。如果该key值未被创建,则创建一个对应的defaultValue的Prop返回。

AppStorage.SetOrCreate("PropA", 47);
var prop = AppStorage.SetAndProp("PropB", 49);    // PropA -> 47, PropB -> 49

Has

static Has(propName: string): boolean

判断对应键值的属性是否存在。

参数:

参数名

类型

必填

参数描述

propName

string

属性的属性值。

返回值:

类型

描述

boolean

返回属性的属性值是否存在。

let simple = AppStorage.Has('simpleProp');

Get

static Get<T>(propName: string): T | undefined

通过此接口获取对应propName值的value。

参数:

参数名

类型

必填

参数描述

propName

string

要获取对应的key值。

返回值:

类型

描述

T | undefined

属性存在返回属性值,属性不存在返回undefined。

AppStorage.SetOrCreate("PropA", 47); 
let value= AppStorage.Get("PropA"); // 47

Set

static Set<T>(propName: string, newValue: T): boolean

对已保存的propName值,替换其value值。

参数:

参数名

类型

必填

参数描述

propName

string

要设置的propName值。

newValue

T

要设置的value值。

返回值:

类型

描述

boolean

如果AppStorage中存在keypropName,则设置value值并返回true,否则返回false。

let simple = AppStorage.Set('simpleProp', 121);

SetOrCreate

static SetOrCreate<T>(propName: string, newValue: T): void

创建或更新setOrCreate内部的值。

参数:

参数名

类型

必填

参数描述

propName

string

要更新或者创建的propName值。

newValue

T

要更新或者创建的value值。

let simple = AppStorage.SetOrCreate('simpleProp', 121);

Delete

static Delete(propName: string): boolean

删除propName指定的键值对。

参数:

参数名

类型

必填

参数描述

propName

string

要删除的属性的propName值。

返回值:

类型

描述

boolean

删除propName指定的键值对。如果存在且删除成功返回true,不存在或删除失败返回false。

let simple = AppStorage.Delete('simpleProp');

Keys

static Keys(): IterableIterator<string>

查找所有键。

返回值:

类型

描述

IterableIterator<string>

IterableIterator<string>类型是Array<string>。返回包含所有键的字符串数组。

let simple = AppStorage.Keys();

staticClear

static staticClear(): boolean

删除所有的属性。

从API version 9开始废弃,推荐使用​​Clear9+​​。

返回值:

类型

描述

boolean

删除所有的属性,如果当前有状态变量依旧引用此属性,返回false。

let simple = AppStorage.staticClear();

Clear9+

static Clear(): boolean

删除所有的属性。

返回值:

类型

描述

boolean

删除所有的属性,如果当前有状态变量依旧引用此属性,返回false。如果没有状态变量引用此属性,则删除成功返回true。

let simple = AppStorage.Clear();

IsMutable

static IsMutable(propName: string): boolean

查询属性及状态。

参数:

参数名

类型

必填

参数描述

propName

string

要查询的属性的propName值。

返回值:

类型

描述

boolean

返回AppStorage中propNam对应的属性是否是可变的。

let simple = AppStorage.IsMutable('simpleProp');

Size

static Size(): number

存在的键值对的个数。

返回值:

类型

描述

number

返回键值对的数量。

let simple = AppStorage.Size();

LocalStorage9+

constructor9+

constructor(initializingProperties?: Object)

创建一个新的LocalStorage对象,并进行初始化。

参数:

参数名

类型

必填

参数描述

initializingProperties

Object

用initializingProperties初始化LocalStorage。

let storage = new LocalStorage();

GetShared9+

static GetShared(): LocalStorage

获取当前共享的LocalStorage对象。

此接口仅可在Stage模型下使用。

返回值:

类型

描述

​LocalStorage​

返回LocalStorage对象。

let storage = LocalStorage.GetShared();

has9+

has(propName: string): boolean

判断属性值是否存在。

参数:

参数名

类型

必填

参数描述

propName

string

给定propName的属性值。

返回值:

类型

描述

boolean

返回给定propName的属性值是否存在。

let storage = new LocalStorage();
storage.has('storageSimpleProp');

get9+

get<T>(propName: string): T

获取对应propName的值。

参数:

参数名

类型

必填

参数描述

propName

string

要获取对应propName的值。

返回值:

类型

描述

T

当propName的value值存在时,返回对应propName的value值。

let storage = new LocalStorage();
let simpleValue = storage.get('storageSimpleProp');

set9+

set<T>(propName: string, newValue: T): boolean

设置propName在LocalStorage中对应的值。

参数:

参数名

类型

必填

参数描述

propName

string

要设置的propName值。

newValue

T

要给propName设置的值。

返回值:

类型

描述

boolean

如果propName存在,则为propName设置值并返回true,否则返回false。

let storage = new LocalStorage();
storage.set('storageSimpleProp', 121);

setOrCreate9+

setOrCreate<T>(propName: string, newValue?: T): boolean

如果propName存在,则用newValue更新propName的值。如果propName不存在,则创建并用newValue初始化propName的值。

参数:

参数名

类型

必填

参数描述

propName

string

要更新或创建的propName值。

newValue

T

要更新或创建的value值。

返回值:

类型

描述

boolean

如果已存在与给定键名字相同的属性,更新其值且返回true。如果不存在具有给定名称的属性,在LocalStorage中创建具有给定默认值的新属性,默认值必须是T类型,不允许undefined 或 null 。

let storage = new LocalStorage();
storage.setOrCreate('storageSimpleProp', 121);

link9+

link<T>(propName: string): T

与LocalStorage双向数据绑定。

参数:

参数名

类型

必填

参数描述

propName

string

要双向绑定的属性名称。

返回值:

类型

描述

T

如果存在具有给定键的属性,返回到此属性的双向绑定,该双向绑定意味着变量或者组件对数据的更改将同步到LocalStorage,然后通过LocalStorage实例同步到任何变量或组件。如果不存在给定键的属性,返回undefined。

let storage = new LocalStorage({'storageSimpleProp': 47});
let link1 = storage.link('storageSimpleProp');

setAndLink9+

setAndLink<T>(propName: string, defaultValue: T): T

与link接口类似,双向数据绑定LocalStorage。

参数:

参数名

类型

必填

参数描述

propName

string

要进行创建的propName值。

defaultValue

T

要进行设置的默认值。

返回值:

类型

描述

T

与Link接口类似,如果当前的propName保存于LocalStorage,返回该propName值对应的value值。如果该propName值未被创建,则创建一个对应的defaultValue的Link返回。

let storage = new LocalStorage();
let localStorage = storage.setAndLink('storageSimpleProp', 121);

prop9+

prop<T>(propName: string): T

单向属性绑定的一种。更新组件的状态。

参数:

参数名

类型

必填

参数描述

propName

string

要单向数据绑定的propName值。

返回值:

类型

描述

T

与@Prop接口类似。如果存在具有给定键的属性,返回此属性的单向数据绑定。该单向绑定意味着只能通过LocalStorage将属性的更改同步到变量或组件。该方法返回的变量为不可变变量,适用于可变和不可变的状态变量。如果此键的属性不存在则返回undefined。

let storage = new LocalStorage();
let localStorage = storage.prop('storageSimpleProp');

setAndProp9+

setAndProp<T>(propName: string, defaultValue: T): T

与Prop接口类似,存在localStorage的单向数据绑定prop值。

参数:

参数名

类型

必填

参数描述

propName

string

要保存的键值对中的propName值。

defaultValue

T

创建的默认值。

返回值:

类型

描述

T

与@Prop接口类似;如果当前的key保存与LocalStorage,返回该propName值对应的value值。如果该propName值未被创建,则创建一个对应的defaultValue的Prop返回。

let storage = new LocalStorage();
let localStorage = storage.setAndProp('storageSimpleProp', 121);

delete9+

delete(propName: string): boolean

删除propName指定的键值对。

参数:

参数名

类型

必填

参数描述

propName

string

要删除的属性的propName值。

返回值:

类型

描述

boolean

删除propName指定的键值对。存在且删除成功,返回true。不存在、删除失败或有状态变量依旧引用propName,返回false。

let storage = new LocalStorage();
storage.delete('storageSimpleProp');

keys9+

keys(): IterableIterator<string>

查找所有键。

返回值:

类型

描述

IterableIterator<string>

返回包含所有键不可序列化的字符串数组。

let storage = new LocalStorage();
let simple = storage.keys();

size9+

size(): number

存在的键值对的个数。

返回值:

类型

描述

number

返回键值对的数量。

let storage = new LocalStorage();
let simple = storage.size();

clear9+

clear(): boolean

删除所有的属性。

返回值:

类型

描述

boolean

删除所有的属性,如果当前有状态变量依旧引用此属性,返回false。

let storage = new LocalStorage();
let simple = storage.clear();

PersistentStorage

PersistProp

static PersistProp<T>(key: string, defaultValue: T): void

关联命名的属性AppStorage变为持久化数据。

参数:

参数名

类型

必填

参数描述

key

string

要关联的属性的key值。

defaultValue

T

要关联的属性的value值。

PersistentStorage.PersistProp('highScore', '0');

DeleteProp

static DeleteProp(key: string): void

取消双向数据绑定,该属性值将从持久存储中删除。

参数:

参数名

类型

必填

参数描述

key

string

要删除的属性key值。

PersistentStorage.DeleteProp('highScore');

PersistProps

static PersistProps(properties: {key: string, defaultValue: any;}[]): void

关联多个命名的属性绑定。

参数:

参数名

类型

必填

参数描述

key

{key: string, defaultValue: any}[]

要关联的属性数组。

PersistentStorage.PersistProps([{key: 'highScore', defaultValue: '0'},{key: 'wightScore',defaultValue: '1'}]);

Keys

static Keys(): Array<string>

返回所有持久化属性的key的数组。

返回值:

类型

描述

Array<string>

返回所有持久化属性的key的数组。

let simple = PersistentStorage.Keys();

说明

  • PersistProp接口使用时,需要保证输入对应的key应当在AppStorage存在。
  • DeleteProp接口使用时,只能对本次启动已经link过的数据生效。

Environment

EnvProp

static EnvProp<S>(key: string, value: S): boolean

关联此系统项到AppStorage中,建议在app启动时使用此接口。如果该属性在AppStorage已存在,返回false。请勿使用AppStorage中的变量,在调用此方法关联环境变量。

参数:

参数名

类型

必填

参数描述

key

string

要关联的key值,支持的范围详见内置环境变量说明。

value

S

要关联的value值。

返回值:

类型

描述

boolean

返回该属性在AppStorage中是否存在。

内置环境变量说明:

key

类型

说明

accessibilityEnabled

string

无障碍屏幕朗读是否启用。

colorMode

ColorMode

深浅色模式,可选值为:

- ColorMode.LIGHT:浅色模式;

- ColorMode.DARK:深色模式。

fontScale

number

字体大小比例。

fontWeightScale

number

字重比例。

layoutDirection

LayoutDirection

布局方向类型,可选值为:

- LayoutDirection.LTR:从左到右;

- LayoutDirection.RTL:从右到左。

languageCode

string

当前系统语言,小写字母,例如zh。

Environment.EnvProp('accessibilityEnabled', 'default');

EnvProps

static EnvProps(props: {key: string; defaultValue: any;}[]): void

关联此系统项数组到AppStorage中。

参数:

参数名

类型

必填

参数描述

props

{key: string, defaultValue: any}[]

要关联的属性数组。

Environment.EnvProps([{key: 'accessibilityEnabled', defaultValue: 'default'},{key: 'accessibilityUnEnabled', defaultValue: 'undefault'}]);

Keys

static Keys(): Array<string>

返回关联的系统项。

返回值:

类型

描述

Array<string>

返回关联的系统项数组。

let simple = Environment.Keys();


文章转载自:​​https://developer.harmonyos.com/cn/docs/documentation/doc-references-V3/ts-state-management-0000001478181453-V3?catalogVersion=V3​

已于2023-3-27 17:49:34修改
收藏
回复
举报
回复
    相关推荐