鸿蒙Harmony应用开发—ArkTS-应用级变量的状态管理

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

说明:

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

本文中T和S的含义如下:

类型 描述
T Class,number,boolean,string和这些类型的数组形式。
S number,boolean,string。

AppStorage

AppStorage具体UI使用说明,详见AppStorage(应用全局的UI状态存储)

link10+

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

setAndLink10+

static setAndLink(propName: string, defaultValue: T): SubscribedAbstractProperty

与Link接口类似,如果给定的propName在AppStorage中存在,则返回该propName对应的属性的双向绑定数据。如果不存在,则使用defaultValue在AppStorage创建和初始化propName,返回其双向绑定数据。

参数:

参数名 类型 必填 参数描述
propName string AppStorage中的属性名。
defaultValue T 当propName在AppStorage中不存在,使用defaultValue在AppStorage中初始化对应的propName。

返回值:

类型 描述
SubscribedAbstractProperty SubscribedAbstractProperty的实例,和AppStorage中propName对应属性的双向绑定的数据。
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

prop10+

static prop(propName: string): SubscribedAbstractProperty

与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

setAndProp10+

static setAndProp(propName: string, defaultValue: T): SubscribedAbstractProperty

与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

has10+

static has(propName: string): boolean

判断propName对应的属性是否在AppStorage中存在。

参数:

参数名 类型 必填 参数描述
propName string AppStorage中的属性名。

返回值:

类型 描述
boolean 如果propName对应的属性在AppStorage中存在,则返回true。不存在则返回false。
AppStorage.has('simpleProp');

get10+

static get(propName: string): T | undefined

获取propName在AppStorage中对应的属性。如果不存在返回undefined。

参数:

参数名 类型 必填 参数描述
propName string AppStorage中的属性名。

返回值:

类型 描述
T | undefined AppStorage中propName对应的属性,如果不存在返回undefined。
AppStorage.setOrCreate('PropA', 47);
let value: number = AppStorage.get('PropA') as number; // 47

set10+

static set(propName: string, newValue: T): boolean

在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

setOrCreate10+

static setOrCreate(propName: string, newValue: T): void

如果propName已经在AppStorage中存在,并且newValue和propName对应属性的值不同,则设置propName对应属性的值为newValue,否则状态变量不会通知UI刷新propName对应属性的值。 如果propName不存在,则创建propName属性,值为newValue。setOrCreate只可以创建单个AppStor

你可能感兴趣的:(鸿蒙-ArkTS,鸿蒙,harmonyos,华为,android,鸿蒙,鸿蒙系统,ArkTS)