状态管理模块提供了应用程序的数据存储能力、持久化数据管理能力、UIAbility数据存储能力和应用程序需要的环境状态。
说明:
本模块首批接口从API version 7开始支持,后续版本的新增接口,采用上角标单独标记接口的起始版本。
本文中T和S的含义如下:
类型 | 描述 |
---|---|
T | Class,number,boolean,string和这些类型的数组形式。 |
S | number,boolean,string。 |
AppStorage具体UI使用说明,详见AppStorage(应用全局的UI状态存储)
static link(propName: string): SubscribedAbstractProperty
与AppStorage中对应的propName建立双向数据绑定。如果给定的propName在AppStorage中存在,返回与AppStorage中propName对应属性的双向绑定数据。
双向绑定数据的修改会同步回AppStorage中,AppStorage会将变化同步到所有绑定该propName的数据和自定义组件中。
如果AppStorage中不存在propName,则返回undefined。
参数:
参数名 | 类型 | 必填 | 参数描述 |
---|---|---|---|
propName | string | 是 | AppStorage中的属性名。 |
返回值:
类型 | 描述 |
---|---|
SubscribedAbstractProperty |
返回双向绑定的数据,如果AppStorage不存在对应的propName,则返回undefined。 |
AppStorage.setOrCreate('PropA', 47);
let linkToPropA1:SubscribedAbstractProperty = AppStorage.link('PropA');
let linkToPropA2:SubscribedAbstractProperty = AppStorage.link('PropA'); // linkToPropA2.get() == 47
linkToPropA1.set(48); // 双向同步: linkToPropA1.get() == linkToPropA2.get() == 48
static setAndLink
与Link接口类似,如果给定的propName在AppStorage中存在,则返回该propName对应的属性的双向绑定数据。如果不存在,则使用defaultValue在AppStorage创建和初始化propName,返回其双向绑定数据。
参数:
参数名 | 类型 | 必填 | 参数描述 |
---|---|---|---|
propName | string | 是 | AppStorage中的属性名。 |
defaultValue | T | 是 | 当propName在AppStorage中不存在,使用defaultValue在AppStorage中初始化对应的propName。 |
返回值:
类型 | 描述 |
---|---|
SubscribedAbstractProperty |
SubscribedAbstractProperty |
AppStorage.setOrCreate('PropA', 47);
let link1: SubscribedAbstractProperty = AppStorage.setAndLink('PropB', 49); // Create PropB 49
let link2: SubscribedAbstractProperty = AppStorage.setAndLink('PropA', 50); // PropA exists, remains 47
static prop
与AppStorage中对应的propName建立单向属性绑定。如果给定的propName在AppStorage中存在,则返回与AppStorage中propName对应属性的单向绑定数据。如果AppStorage中不存在propName,则返回undefined。单向绑定数据的修改不会被同步回AppStorage中。
说明: Prop仅支持简单类型。
参数:
参数名 | 类型 | 必填 | 参数描述 |
---|---|---|---|
propName | string | 是 | AppStorage中的属性名。 |
返回值:
类型 | 描述 |
---|---|
SubscribedAbstractProperty |
返回单向绑定的数据,如果AppStorage不存在对应的propName,则返回undefined。 |
AppStorage.setOrCreate('PropA', 47);
let prop1: SubscribedAbstractProperty = AppStorage.prop('PropA');
let prop2: SubscribedAbstractProperty = AppStorage.prop('PropA');
prop1.set(1); // one-way sync: prop1.get()=1; but prop2.get() == 47
static setAndProp
与Prop接口类似。如果给定的propName在AppStorage存在,则返回该propName对应的属性的单向绑定数据。如果不存在,则使用defaultValue在AppStorage创建和初始化propName对应的属性,返回其单向绑定数据。
参数:
参数名 | 类型 | 必填 | 参数描述 |
---|---|---|---|
propName | string | 是 | AppStorage中的属性名。 |
defaultValue | T | 是 | 当propName在AppStorage中不存在时,使用default在AppStorage中初始化对应的propName。 |
返回值:
类型 | 描述 |
---|---|
SubscribedAbstractProperty |
SubscribedAbstractProperty |
AppStorage.setOrCreate('PropA', 47);
let prop: SubscribedAbstractProperty = AppStorage.setAndProp('PropB', 49); // PropA -> 47, PropB -> 49
static has(propName: string): boolean
判断propName对应的属性是否在AppStorage中存在。
参数:
参数名 | 类型 | 必填 | 参数描述 |
---|---|---|---|
propName | string | 是 | AppStorage中的属性名。 |
返回值:
类型 | 描述 |
---|---|
boolean | 如果propName对应的属性在AppStorage中存在,则返回true。不存在则返回false。 |
AppStorage.has('simpleProp');
static get
获取propName在AppStorage中对应的属性。如果不存在返回undefined。
参数:
参数名 | 类型 | 必填 | 参数描述 |
---|---|---|---|
propName | string | 是 | AppStorage中的属性名。 |
返回值:
类型 | 描述 |
---|---|
T | undefined | AppStorage中propName对应的属性,如果不存在返回undefined。 |
AppStorage.setOrCreate('PropA', 47);
let value: number = AppStorage.get('PropA') as number; // 47
static set
在AppStorage中设置propName对应属性的值。如果newValue的值和propName对应属性的值相同,即不需要做赋值操作,状态变量不会通知UI刷新propName对应属性的值。
参数:
参数名 | 类型 | 必填 | 参数描述 |
---|---|---|---|
propName | string | 是 | AppStorage中的属性名。 |
newValue | T | 是 | 属性值,不能为undefined或null。 |
返回值:
类型 | 描述 |
---|---|
boolean | 如果AppStorage不存在propName对应的属性,或者设置的newValue是undefined或者null,返回false。设置成功则返回true。 |
AppStorage.setOrCreate('PropA', 48);
let res: boolean = AppStorage.set('PropA', 47) // true
let res1: boolean = AppStorage.set('PropB', 47) // false
static setOrCreate
如果propName已经在AppStorage中存在,并且newValue和propName对应属性的值不同,则设置propName对应属性的值为newValue,否则状态变量不会通知UI刷新propName对应属性的值。 如果propName不存在,则创建propName属性,值为newValue。setOrCreate只可以创建单个AppStor