Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Docs
提交
c45e5b5b
D
Docs
项目概览
OpenHarmony
/
Docs
大约 2 年 前同步成功
通知
161
Star
293
Fork
28
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
D
Docs
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
c45e5b5b
编写于
4月 10, 2023
作者:
Z
zengyawen
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
update docs
Signed-off-by:
N
zengyawen
<
zengyawen1@huawei.com
>
上级
c0624a76
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
693 addition
and
307 deletion
+693
-307
zh-cn/application-dev/reference/arkui-ts/Readme-CN.md
zh-cn/application-dev/reference/arkui-ts/Readme-CN.md
+1
-0
zh-cn/application-dev/reference/arkui-ts/ts-custom-component-lifecycle.md
...n-dev/reference/arkui-ts/ts-custom-component-lifecycle.md
+192
-0
zh-cn/application-dev/reference/arkui-ts/ts-state-management.md
...application-dev/reference/arkui-ts/ts-state-management.md
+500
-307
未找到文件。
zh-cn/application-dev/reference/arkui-ts/Readme-CN.md
浏览文件 @
c45e5b5b
...
...
@@ -162,6 +162,7 @@
-
[
时间选择弹窗
](
ts-methods-timepicker-dialog.md
)
-
[
文本选择弹窗
](
ts-methods-textpicker-dialog.md
)
-
[
菜单
](
ts-methods-menu.md
)
-
[
自定义组件的生命周期
](
ts-custom-component-lifecycle.md
)
-
[
应用级变量的状态管理
](
ts-state-management.md
)
-
[
像素单位
](
ts-pixel-units.md
)
-
[
枚举说明
](
ts-appendix-enums.md
)
...
...
zh-cn/application-dev/reference/arkui-ts/ts-custom-component-lifecycle.md
0 → 100644
浏览文件 @
c45e5b5b
# 自定义组件的生命周期
自定义组件的生命周期回调函数用于通知用户该自定义组件的生命周期,这些回调函数是私有的,在运行时由开发框架在特定的时间进行调用,不能从应用程序中手动调用这些回调函数。
>**说明:**
>
>允许在生命周期函数中使用Promise和异步回调函数,比如网络资源获取,定时器设置等;
## aboutToAppear
aboutToAppear?(): void
aboutToAppear函数在创建自定义组件的新实例后,在执行其build()函数之前执行。允许在aboutToAppear函数中改变状态变量,更改将在后续执行build()函数中生效。
## aboutToDisappear
aboutToDisappear?(): void
aboutToDisappear函数在自定义组件析构销毁之前执行。不允许在aboutToDisappear函数中改变状态变量,特别是
\@
Link变量的修改可能会导致应用程序行为不稳定。
## onPageShow
onPageShow?(): void
页面每次显示时触发一次,包括路由过程、应用进入前台等场景,仅
\@
Entry装饰的自定义组件生效。
## onPageHide
onPageHide?(): void
页面每次隐藏时触发一次,包括路由过程、应用进入前后台等场景,仅
\@
Entry装饰的自定义组件生效。
## onBackPress
onBackPress?(): void
当用户点击返回按钮时触发,仅
\@
Entry装饰的自定义组件生效。返回true表示页面自己处理返回逻辑,不进行页面路由,返回false表示使用默认的路由返回逻辑。不设置返回值按照false处理。
```
ts
// xxx.ets
@
Entry
@
Component
struct
IndexComponent
{
@
State
textColor
:
Color
=
Color
.
Black
;
onPageShow
()
{
this
.
textColor
=
Color
.
Blue
;
console
.
info
(
'
IndexComponent onPageShow
'
);
}
onPageHide
()
{
this
.
textColor
=
Color
.
Transparent
;
console
.
info
(
'
IndexComponent onPageHide
'
);
}
onBackPress
()
{
this
.
textColor
=
Color
.
Red
;
console
.
info
(
'
IndexComponent onBackPress
'
);
}
build
()
{
Column
()
{
Text
(
'
Hello World
'
)
.
fontColor
(
this
.
textColor
)
.
fontSize
(
30
)
.
margin
(
30
)
}.
width
(
'
100%
'
)
}
}
```

## onLayout<sup>9+</sup>
onLayout?(children: Array
<
LayoutChild
>
, constraint: ConstraintSizeOptions): void
框架会在自定义组件布局时,将该自定义组件的子节点信息和自身的尺寸范围通过onLayout传递给该自定义组件。不允许在onLayout函数中改变状态变量。
**参数:**
| 参数名 | 类型 | 说明 |
| ---------- | ---------------------------------------- | ---------------- |
| children | Array
<
[LayoutChild](#layoutchild9)
>
| 子组件布局信息。 |
| constraint |
[
ConstraintSizeOptions
](
ts-types.md#constraintsizeoptions
)
| 父组件constraint信息。 |
## onMeasure<sup>9+</sup>
onMeasure?(children: Array
<
LayoutChild
>
, constraint: ConstraintSizeOptions): void
框架会在自定义组件确定尺寸时,将该自定义组件的子节点信息和自身的尺寸范围通过onMeasure传递给该自定义组件。不允许在onMeasure函数中改变状态变量。
**参数:**
| 参数名 | 类型 | 说明 |
| ---------- | ---------------------------------------- | ---------------- |
| children | Array
<
[LayoutChild](#layoutchild9)
>
| 子组件布局信息。 |
| constraint |
[
ConstraintSizeOptions
](
ts-types.md#constraintsizeoptions
)
| 父组件constraint信息。 |
## LayoutChild<sup>9+</sup>
子组件布局信息。
| 参数 | 参数类型 | 描述 |
| ---------- | ---------------------------------------- | ------------------- |
| name | string | 子组件名称。 |
| id | string | 子组件id。 |
| constraint |
[
ConstraintSizeOptions
](
ts-types.md#constraintsizeoptions
)
| 子组件约束尺寸。 |
| borderInfo |
[
LayoutBorderInfo
](
#layoutborderinfo9
)
| 子组件border信息。 |
| position |
[
Position
](
ts-types.md#position
)
| 子组件位置坐标。 |
| measure | (childConstraint:)
=
>
void | 调用此方法对子组件的尺寸范围进行限制。 |
| layout | (LayoutInfo:
[LayoutInfo](#layoutinfo9))
=
>
void | 调用此方法对子组件的位置信息进行限制。 |
## LayoutBorderInfo<sup>9+</sup>
子组件border信息。
| 参数 | 参数类型 | 描述 |
| ----------- | ------------------------------------ | ----------------------- |
| borderWidth |
[
EdgeWidths
](
ts-types.md#edgewidths
)
| 边框宽度类型,用于描述组件边框不同方向的宽度。 |
| margin |
[
Margin
](
ts-types.md#margin
)
| 外边距类型,用于描述组件不同方向的外边距。 |
| padding |
[
Padding
](
ts-types.md#padding
)
| 内边距类型,用于描述组件不同方向的内边距。 |
## LayoutInfo<sup>9+</sup>
子组件layout信息。
| 参数 | 参数类型 | 描述 |
| ---------- | ---------------------------------------- | -------- |
| position |
[
Position
](
ts-types.md#position
)
| 子组件位置坐标。 |
| constraint |
[
ConstraintSizeOptions
](
ts-types.md#constraintsizeoptions
)
| 子组件约束尺寸。 |
```
ts
// xxx.ets
@
Entry
@
Component
struct
Index
{
build
()
{
Column
()
{
CustomLayout
()
{
ForEach
([
1
,
2
,
3
],
(
index
)
=>
{
Text
(
'
Sub
'
+
index
)
.
fontSize
(
30
)
.
borderWidth
(
2
)
})
}
}
}
}
@
Component
struct
CustomLayout
{
@
BuilderParam
builder
:
()
=>
{};
onLayout
(
children
:
Array
<
LayoutChild
>
,
constraint
:
ConstraintSizeOptions
)
{
let
pos
=
0
;
children
.
forEach
((
child
)
=>
{
child
.
layout
({
position
:
{
x
:
pos
,
y
:
pos
},
constraint
:
constraint
})
pos
+=
100
;
})
}
onMeasure
(
children
:
Array
<
LayoutChild
>
,
constraint
:
ConstraintSizeOptions
)
{
let
size
=
100
;
children
.
forEach
((
child
)
=>
{
child
.
measure
({
minHeight
:
size
,
minWidth
:
size
,
maxWidth
:
size
,
maxHeight
:
size
})
size
+=
50
;
})
}
build
()
{
this
.
builder
()
}
}
```

zh-cn/application-dev/reference/arkui-ts/ts-state-management.md
浏览文件 @
c45e5b5b
# 应用级变量的状态管理
状态管理模块提供了应用程序的数据存储能力、持久化数据管理能力、Ability数据存储能力和应用程序需要的环境状态,其中Ability数据存储从API version9开始支持。
> **说明:**
状态管理模块提供了应用程序的数据存储能力、持久化数据管理能力、UIAbility数据存储能力和应用程序需要的环境状态。
>**说明:**
>
> 本模块首批接口从API version 7开始支持,后续版本的新增接口,采用上角标单独标记接口的起始版本。
>本模块首批接口从API version 7开始支持,后续版本的新增接口,采用上角标单独标记接口的起始版本。
本文中T和S的含义如下:
| 类型 | 描述 |
| ---- | -------------------------------------- |
| T | Class,number,boolean,string和这些类型的数组形式。 |
| S | number,boolean,string。 |
## AppStorage
### Link
Link(propName: string): any
static Link(propName: string): any
与AppStorage中对应的propName建立双向数据绑定。如果给定的propName在AppStorage中存在,返回与AppStorage中propName对应属性的双向绑定数据。
与localStorage双向数据绑定。
双向绑定数据的修改会同步回AppStorage中,AppStorage会将变化同步到所有绑定该propName的数据和自定义组件中。
如果AppStorage中不存在propName,则返回undefined。
**参数:**
| 参数名 | 类型 | 必填 | 参数描述 |
| -------- | ------ | ---- | ----------- |
| propName | string | 是 |
要双向绑定的属性名称
。 |
| 参数名 | 类型 | 必填 | 参数描述
|
| -------- | ------ | ---- | -----------
-----
|
| propName | string | 是 |
AppStorage中的属性名
。 |
**返回值:**
| 类型 | 描述 |
| ----- | ---------------------------------------- |
| @Link | 在具有给定键的数据,则返回到此属性的双向数据绑定,该双向绑定意味着变量或者组件对数据的更改将同步到AppStorage,通过AppStorage对数据的修改将同步到变量或者组件。 |
| 类型 | 描述 |
| ---- | ---------------------------------------- |
| any | 返回双向绑定的数据,如果AppStorage不存在对应的propName,在返回undefined。 |
```
ts
let
simple
=
AppStorage
.
Link
(
'
simpleProp
'
)
AppStorage
.
SetOrCreate
(
'
PropA
'
,
47
);
let
linkToPropA1
=
AppStorage
.
Link
(
'
PropA
'
);
let
linkToPropA2
=
AppStorage
.
Link
(
'
PropA
'
);
// linkToPropA2.get() == 47
linkToPropA1
.
set
(
48
);
// 双向同步: linkToPropA1.get() == linkToPropA2.get() == 48
```
### SetAndLink
SetAndLink
\<
T>(propName: string, defaultValue: T): SubscribedAbstractProperty
\<
T>
static SetAndLink
<
T
>
(propName: string, defaultValue: T): SubscribedAbstractProperty
<
T
>
与Link接口类似,如果
当前的key保存于AppStorage,则返回该key对应的value。如果该key未被创建,则创建一个对应default值的Link返回
。
与Link接口类似,如果
给定的propName在AppStorage中存在,则返回该propName对应的属性的双向绑定数据。如果不存在,则使用defaultValue在AppStorage创建和初始化propName,返回其双向绑定数据
。
**参数:**
| 参数名 | 类型 | 必填 | 参数描述 |
| ------------ | ------ | ---- | ----------- |
| propName | string | 是 |
要进行创建的key值。
|
| defaultValue | T | 是 |
要进行设置的默认值。
|
| 参数名 | 类型 | 必填 | 参数描述
|
| ------------ | ------ | ---- | -----------
-----------------------------
|
| propName | string | 是 |
AppStorage中的属性名。
|
| defaultValue | T | 是 |
当propName在AppStorage中不存在,使用defaultValue在AppStorage中初始化对应的propName。
|
**返回值:**
| 类型 | 描述 |
| ----- | ---------------------------------------- |
| @Link | 与Link接口类似,如果当前的key保存于AppStorage,返回该key值对应的value值。如果该key值未被创建,则创建一个对应的defaultValue的Link返回。 |
| 类型 | 描述 |
| ----------------------------------- | ---------------------------------------- |
| SubscribedAbstractProperty
<
T
>
| SubscribedAbstractProperty
<
T
>
的实例,和AppStorage中propName对应属性的双向绑定的数据。 |
```
ts
let
simple
=
AppStorage
.
SetAndLink
(
'
simpleProp
'
,
121
)
AppStorage
.
SetOrCreate
(
'
PropA
'
,
47
);
let
link1
:
SubscribedAbstractProperty
<
number
>
=
AppStorage
.
SetAndLink
(
'
PropB
'
,
49
);
// Create PropB 49
let
link2
:
SubscribedAbstractProperty
<
number
>
=
AppStorage
.
SetAndLink
(
'
PropA
'
,
50
);
// PropA exists, remains 47
```
### Prop
Prop(propName: string): any
static Prop(propName: string): any
与AppStorage中对应的propName建立单向属性绑定。如果给定的propName在AppStorage中存在,则返回与AppStorage中propName对应属性的单向绑定数据。如果AppStorage中不存在propName,则返回undefined。单向绑定数据的修改不会被同步回AppStorage中。
单向属性绑定的一种。更新组件的状态。。
>**说明:**
> Prop仅支持简单类型。
**参数:**
| 参数名 | 类型 | 必填 | 参数描述 |
| -------- | ------ | ---- | ----------- |
| propName | string | 是 |
要进行创建的key值
。 |
| 参数名 | 类型 | 必填 | 参数描述
|
| -------- | ------ | ---- | -----------
-----
|
| propName | string | 是 |
AppStorage中的属性名
。 |
**返回值:**
| 类型 | 描述 |
| ----- | ---------------------------------------- |
| @Prop | 如果存在具有给定键的属性,则返回此属性的单向数据绑定。该单向绑定意味着只能通过AppStorage将属性的更改同步到变量或者组件。该方法返回的变量为不可变变量,适用于可变和不可变的状态属性,如果具有此键的属性不存在则返回undefined。 |
| 类型 | 描述 |
| ---- | ---------------------------------------- |
| any | 返回单向绑定的数据,如果AppStorage不存在对应的propName,在返回undefined。 |
```
ts
let
simple
=
AppStorage
.
Prop
(
'
simpleProp
'
)
AppStorage
.
SetOrCreate
(
'
PropA
'
,
47
);
let
prop1
=
AppStorage
.
Prop
(
'
PropA
'
);
let
prop2
=
AppStorage
.
Prop
(
'
PropA
'
);
prop1
.
set
(
1
);
// one-way sync: prop1.get()=1; but prop2.get() == 47
```
### SetAndProp
SetAndProp
\<
S>(propName: string, defaultValue: S): SubscribedAbstractProperty
\<
S>
static SetAndProp
<
S
>
(propName: string, defaultValue: S): SubscribedAbstractProperty
<
S
>
与Prop接口类似
,如果当前的key保存于AppStorage,则返回该key对应的value。如果该key未被创建,则创建一个对应default值的Prop返回
。
与Prop接口类似
。如果给定的propName在AppStorage存在,则返回该propName对应的属性的单向绑定数据。如果不存在,则使用defaultValue在AppStorage创建和初始化propName对应的属性,返回其单向绑定数据
。
**参数:**
| 参数名 | 类型 | 必填 | 参数描述 |
| ------------ | ------ | ---- | --------------- |
| propName | string | 是 |
要保存的的键值对中的key值。
|
| defaultValue | S | 是 |
创建的默认值。
|
| 参数名 | 类型 | 必填 | 参数描述
|
| ------------ | ------ | ---- | ---------------
-------------------------
|
| propName | string | 是 |
AppStorage中的属性名。
|
| defaultValue | S | 是 |
当propName在AppStorage中不存在时,使用default在AppStorage中初始化对应的propName。
|
**返回值:**
| 类型 | 描述 |
| ----- | ---------------------------------------- |
| @Prop | 如果当前的key保存与AppStorage,返回该key值对应的value值。如果该key值未被创建,则创建一个对应的defaultValue的Prop返回。 |
| 类型 | 描述 |
| ----------------------------------- | --------------------------------------- |
| SubscribedAbstractProperty
<
S
>
| SubscribedAbstractProperty
<
S
>
的实例。 |
```
ts
let
simple
=
AppStorage
.
SetAndProp
(
'
simpleProp
'
,
121
)
AppStorage
.
SetOrCreate
(
'
PropA
'
,
47
);
let
prop
:
SubscribedAbstractProperty
<
number
>
=
AppStorage
.
SetAndProp
(
'
PropB
'
,
49
);
// PropA -> 47, PropB -> 49
```
### Has
Has(propName: string): boolean
static
Has(propName: string): boolean
判断
对应键值的属性是否
存在。
判断
propName对应的属性是否在AppStorage中
存在。
**参数:**
| 参数名 | 类型 | 必填 | 参数描述 |
| -------- | ------ | ---- | ------- |
| propName | string | 是 |
属性的属性值
。 |
| 参数名 | 类型 | 必填 | 参数描述
|
| -------- | ------ | ---- | -------
---------
|
| propName | string | 是 |
AppStorage中的属性名
。 |
**返回值:**
| 类型 | 描述 |
| ------- | ------------- |
| boolean | 返回属性的属性值是否存在。 |
| 类型 | 描述 |
| ------- | ---------------------------------------- |
| boolean | 如果propName对应的属性在AppStorage中存在,则返回true。不存在则返回false。 |
```
ts
let
simple
=
AppStorage
.
Has
(
'
simpleProp
'
)
AppStorage
.
Has
(
'
simpleProp
'
);
```
### Get
Get
\<
T>
(propName: string): T | undefined
static Get
<
T
>
(propName: string): T | undefined
通过此接口获取对应key值的value
。
获取propName在AppStorage中对应的属性。如果不存在返回undefined
。
**参数:**
| 参数名 | 类型 | 必填 | 参数描述 |
| -------- | ------ | ---- | ----------- |
| propName | string | 是 |
要获取对应的key值
。 |
| 参数名 | 类型 | 必填 | 参数描述
|
| -------- | ------ | ---- | -----------
-----
|
| propName | string | 是 |
AppStorage中的属性名
。 |
**返回值:**
| 类型 | 描述 |
| ----------------- | ------------- |
| T或undefined | 属性存在返回属性值,属性不存在返回undefined。 |
| 类型 | 描述 |
| ------------------------ | ---------------------------------------- |
| T
\|
undefined | AppStorage中propName对应的属性,如果不存在返回undefined。 |
```
ts
let
simple
=
AppStorage
.
Get
(
'
simpleProp
'
)
AppStorage
.
SetOrCreate
(
'
PropA
'
,
47
);
let
value
:
number
=
AppStorage
.
Get
(
'
PropA
'
);
// 47
```
### Set
Set
\<
T>
(propName: string, newValue: T): boolean
static Set
<
T
>
(propName: string, newValue: T): boolean
对已保存的key值,替换其value
值。
在AppStorage中设置propName对应属性的
值。
**参数:**
| 参数名 | 类型 | 必填 | 参数描述 |
| -------- | ------ | ---- | ----------- |
| propName | string | 是 |
要设置的key值。
|
| newValue | T | 是 |
要设置的value值
。 |
| 参数名 | 类型 | 必填 | 参数描述
|
| -------- | ------ | ---- | -----------
-----------
|
| propName | string | 是 |
AppStorage中的属性名。
|
| newValue | T | 是 |
属性值,不能为undefined或null
。 |
**返回值:**
| 类型 | 描述 |
| ------- | ----------------------------------- |
| boolean | 如果存在key值,设置value值并返回true,否则返回false。 |
| 类型 | 描述 |
| ------- | ---------------------------------------- |
| boolean | 如果AppStorage不存在propName对应的属性,或者设置的newValue是undefined或者null,返回false。设置成功则返回true。 |
```
ts
let
simple
=
AppStorage
.
Set
(
'
simpleProp
'
,
121
)
AppStorage
.
SetOrCreate
(
'
PropA
'
,
48
);
let
res
:
boolean
=
AppStorage
.
Set
(
'
PropA
'
,
47
)
// true
let
res1
:
boolean
=
AppStorage
.
Set
(
'
PropB
'
,
47
)
// false
```
### SetOrCreate
SetOrCreate
\<
T>
(propName: string, newValue: T): void
static SetOrCreate
<
T
>
(propName: string, newValue: T): void
创建或更新setOrCreate内部的值
。
propName如果已经在AppStorage中存在,则设置propName对应是属性的值为newValue。如果不存在,则创建propName属性,值为newValue
。
**参数:**
| 参数名 | 类型 | 必填 | 参数描述 |
| -------- | ------ | ---- | --------------- |
| propName | string | 是 |
要更新或者创建的key值。
|
| newValue | T | 是 |
要更新或者创建的value值
。 |
| 参数名 | 类型 | 必填 | 参数描述
|
| -------- | ------ | ---- | ---------------
-------
|
| propName | string | 是 |
AppStorage中的属性名。
|
| newValue | T | 是 |
属性值,不能为undefined或null
。 |
**返回值:**
| 类型 | 描述 |
| ------- | ---------------------------------------- |
| boolean | 如果已存在与给定键名字相同的属性,更新其值且返回true。如果不存在具有给定名称的属性,在AppStorage中创建具有给定默认值的新属性,默认值必须是T类型。不允许undefined 或 null 返回true。 |
```
ts
let
simple
=
AppStorage
.
SetOrCreate
(
'
simpleProp
'
,
121
)
AppStorage
.
SetOrCreate
(
'
simpleProp
'
,
121
);
```
### Delete
Delete(propName: string): boolean
static
Delete(propName: string): boolean
删除key指定的键值对。
在AppStorage中删除propName对应的属性。
在AppStorage中删除该属性的前提是必须保证该属性没有订阅者。如果有订阅者,则返回false。删除成功返回true。
属性的订阅者为Link、Prop等接口绑定的propName,以及
\@
StorageLink('propName')和
\@
StorageProp('propName')。这就意味着如果自定义组件中使用
\@
StorageLink('propName')和
\@
StorageProp('propName')或者SubscribedAbstractProperty实例依旧对propName有同步关系,则该属性不能从AppStorage中删除。
**参数:**
| 参数名 | 类型 | 必填 | 参数描述 |
| -------- | ------ | ---- | ------------ |
| propName | string | 是 |
要删除的属性的key值
。 |
| 参数名 | 类型 | 必填 | 参数描述
|
| -------- | ------ | ---- | ------------
----
|
| propName | string | 是 |
AppStorage中的属性名
。 |
**返回值:**
| 类型 | 描述 |
| ------- | ---------------------------------------- |
| boolean | 删除key指定的键值对,如果存在且删除成功返回true,不存在或删除失败返回false。 |
| boolean | 如果AppStorage中有对应的属性,且该属性已经没有订阅者,则删除成功,返回true。如果属性不存在,或者该属性还存在订阅者,则返回false。 |
```
ts
let
simple
=
AppStorage
.
Delete
(
'
simpleProp
'
)
AppStorage
.
SetOrCreate
(
'
PropA
'
,
47
);
AppStorage
.
Link
(
'
PropA
'
);
let
res
:
boolean
=
AppStorage
.
Delete
(
'
PropA
'
);
// false, PropA still has a subscriber
AppStorage
.
SetOrCreate
(
'
PropB
'
,
48
);
let
res1
:
boolean
=
AppStorage
.
Delete
(
'
PropB
'
);
// true, PropB is deleted from AppStorage successfully
```
### keys
keys(): IterableIterator
\<
string>
### Keys
static Keys(): IterableIterator
<
string
>
查找所有键
。
返回AppStorage中所有的属性名
。
**返回值:**
| 类型 | 描述 |
| -------------- | -------------- |
| array
\<
string> | 返回包含所有键的字符串数组。 |
| 类型 | 描述 |
| ------------------------------ | ------------------ |
| IterableIterator
<
string
>
| AppStorage中所有的属性名。 |
```
ts
let
simple
=
AppStorage
.
Keys
()
AppStorage
.
SetOrCreate
(
'
PropB
'
,
48
);
let
keys
:
IterableIterator
<
string
>
=
AppStorage
.
Keys
();
```
### staticClear
staticClear(): boolean
static
static
Clear(): boolean
删除所有的属性。
从API version 9开始废弃,推荐使用
[
Clear
](
#clear
)
。
从API version 9开始废弃,推荐使用
[
Clear
9+
](
#clear9
)
。
**返回值:**
...
...
@@ -240,333 +296,389 @@ staticClear(): boolean
| ------- | --------------------------------- |
| boolean | 删除所有的属性,如果当前有状态变量依旧引用此属性,返回false。 |
```
ts
let
simple
=
AppStorage
.
staticClear
()
let
simple
=
AppStorage
.
staticClear
()
;
```
### Clear<sup>9+</sup>
Clear(): boolean
static
Clear(): boolean
删除所有的属性。
清除AppStorage的所有的属性。在AppStorage中清除所有属性的前提是,已经没有任何订阅者。如果有,则什么都不做返回false;删除成功返回true。
订阅者的含义和参考
[
Delete
](
#delete
)
。
**返回值:**
| 类型 | 描述 |
| ------- | --------------------------------- |
| boolean | 删除所有的属性,如果当前有状态变量依旧引用此属性,返回false。 |
| 类型 | 描述 |
| ------- | ---------------------------------------- |
| boolean | 如果AppStorage中的属性已经没有订阅者,则清除成功,返回true。否则返回false。 |
```
typescript
let
simple
=
AppStorage
.
Clear
()
AppStorage
.
SetOrCreate
(
'
PropA
'
,
47
);
let
res
:
boolean
=
AppStorage
.
Clear
();
// true, there are no subscribers
```
### IsMutable
IsMutable(propName: string): boolean
static
IsMutable(propName: string): boolean
查询属性及状态
。
返回AppStorage中propName对应的属性是否是可变的
。
**参数:**
| 参数名 | 类型 | 必填 | 参数描述 |
| -------- | ------ |
:--- |
------------ |
| propName | string | 是 |
要查询的属性的key值
。 |
| 参数名 | 类型 | 必填 | 参数描述
|
| -------- | ------ |
---- | ----
------------ |
| propName | string | 是 |
AppStorage中的属性名
。 |
**返回值:**
| 类型 | 描述 |
| ------- | ------------------ |
| boolean | 返回此属性是否存在并且是否可以改变。 |
| 类型 | 描述 |
| ------- | -------------------------------- |
| boolean | 返回AppStorage中propNam对应的属性是否是可变的。 |
```
ts
let
simple
=
AppStorage
.
IsMutable
(
'
simpleProp
'
)
AppStorage
.
SetOrCreate
(
'
PropA
'
,
47
);
let
res
:
boolean
=
AppStorage
.
IsMutable
(
'
simpleProp
'
);
```
### Size
Size(): number
static
Size(): number
存在的键值对的个数
。
返回LocalStorage中的属性数量
。
**返回值:**
| 类型 | 描述 |
| ------ | --------- |
| number | 返回键值对的数量。 |
| 类型 | 描述 |
| ------ | ------------------- |
| number | 返回AppStorage中属性的数量。 |
```
ts
let
simple
=
AppStorage
.
Size
()
AppStorage
.
SetOrCreate
(
'
PropB
'
,
48
);
let
res
:
number
=
AppStorage
.
Size
();
// 1
```
## LocalStorage<sup>9+</sup>
### constructor<sup>9+</sup>
constructor(initializingProperties?: Object)
创建一个新的LocalStorage
对象,并进行初始化
。
创建一个新的LocalStorage
实例。使用Object.keys(initializingProperties)返回的属性和其数值,初始化LocalStorage实例
。
**参数:**
| 参数名 | 类型 | 必填 | 参数描述 |
| ---------------------- | ------ | ---- | ---------------------------------------- |
| initializingProperties | Object | 否 | object.keys(obj)返回的所有对象属性及其值都将添加到LocalStorage。 |
| initializingProperties | Object | 否 | 用initializingProperties包含的属性和数值初始化LocalStorage。initializingProperties不能为undefined。 |
```
ts
let
storage
=
new
LocalStorage
()
let
storage
:
LocalStorage
=
new
LocalStorage
({
'
PropA
'
:
47
});
```
### GetShared<sup>9+</sup>
static GetShared(): LocalStorage
获取当前
的共享的LocalStorage对象
。
获取当前
stage共享的LocalStorage实例
。
此接口仅可在Stage模型下使用。
**模型约束:**
此接口仅可在Stage模型下使用。
**返回值:**
| 类型 | 描述 |
| ----------------------------- | ----------------- |
|
[
LocalStorage
](
#localstorage
)
| 返回LocalStorage对象。 |
| 类型 | 描述 |
| ------------------------------ | ----------------- |
|
[
LocalStorage
](
#localstorage9
)
| 返回LocalStorage实例。 |
```
ts
let
storage
=
LocalStorage
.
GetShared
()
let
storage
:
LocalStorage
=
LocalStorage
.
GetShared
();
```
### has<sup>9+</sup>
has(propName: string): boolean
判断
属性值是否
存在。
判断
propName对应的属性是否在LocalStorage中
存在。
**参数:**
| 参数名 | 类型 | 必填 | 参数描述 |
| -------- | ------ | ---- | ------- |
| propName | string | 是 |
属性的属性值
。 |
| 参数名 | 类型 | 必填 | 参数描述
|
| -------- | ------ | ---- | -------
-----------
|
| propName | string | 是 |
LocalStorage中的属性名
。 |
**返回值:**
| 类型 | 描述 |
| ------- | ------------- |
| boolean |
返回属性的属性值是否存在
。 |
| 类型 | 描述
|
| ------- | -------------
---------------------------
|
| boolean |
如果propName对应的属性在AppStorage中存在,则返回true。不存在则返回false
。 |
```
ts
let
storage
=
new
LocalStorage
()
storage
.
has
(
'
storageSimpleProp
'
)
```
let storage: LocalStorage = new LocalStorage({ 'PropA': 47 });
storage.has('PropA'); // true
```
### get<sup>9+</sup>
get
\<
T>(propName: string): T
get
<
T
>
(propName: string): T | undefined
获取
对应key值的value
。
获取
propName在LocalStorage中对应的属性
。
**参数:**
| 参数名 | 类型 | 必填 | 参数描述 |
| -------- | ------ | ---- | ----------- |
| propName | string | 是 |
要获取对应的key值
。 |
| 参数名 | 类型 | 必填 | 参数描述
|
| -------- | ------ | ---- | -----------
-------
|
| propName | string | 是 |
LocalStorage中的属性名
。 |
**返回值:**
| 类型 | 描述 |
| -------------- | ---------------------------------------- |
| T
\|
undefined | 当keyvalue存在时,返回keyvalue值。不存在返回undefined。 |
| 类型 | 描述 |
| ------------------------ | ---------------------------------------- |
| T
\|
undefined | LocalStorage中propName对应的属性,如果不存在返回undefined。 |
```
ts
let
storage
=
new
LocalStorage
()
let
simpleValue
=
storage
.
get
(
'
storageSimpleProp
'
)
let
storage
:
LocalStorage
=
new
LocalStorage
({
'
PropA
'
:
47
});
let
value
:
number
=
storage
.
get
(
'
PropA
'
);
// 47
```
### set<sup>9+</sup>
set
\<
T>
(propName: string, newValue: T): boolean
set
<
T
>
(propName: string, newValue: T): boolean
存储对象
值。
在LocalStorage中设置propName对应属性的
值。
**参数:**
| 参数名 | 类型 | 必填 | 参数描述 |
| -------- | ------ | ---- | ----------- |
| propName | string | 是 |
要设置的key值。
|
| newValue | T | 是 |
要设置的value值
。 |
| 参数名 | 类型 | 必填 | 参数描述
|
| -------- | ------ | ---- | -----------
------------
|
| propName | string | 是 |
LocalStorage中的属性名。
|
| newValue | T | 是 |
属性值,不能为undefined或者null
。 |
**返回值:**
| 类型 | 描述 |
| ------- | ----------------------------------- |
| boolean | 如果存在key值,设置value值并返回true,否则返回false。 |
| 类型 | 描述 |
| ------- | ---------------------------------------- |
| boolean | 如果LocalStorage不存在propName对应的属性,或者设置的newValue是undefined或者null,返回false。设置成功返回true。 |
```
ts
let
storage
=
new
LocalStorage
()
storage
.
set
(
'
storageSimpleProp
'
,
121
)
let
storage
:
LocalStorage
=
new
LocalStorage
({
'
PropA
'
:
47
});
let
res
:
boolean
=
storage
.
set
(
'
PropA
'
,
47
);
// true
let
res1
:
boolean
=
storage
.
set
(
'
PropB
'
,
47
);
// false
```
### setOrCreate<sup>9+</sup>
setOrCreate
\<
T>(propName: string, newValue
: T): boolean
setOrCreate
<
T
>
(propName: string, newValue?
: T): boolean
创建或更新setOrCreate内部的值
。
propName如果已经在LocalStorage中存在,则设置propName对应是属性的值为newValue。如果不存在,则创建propName属性,初始化为newValue
。
**参数:**
| 参数名 | 类型 | 必填 | 参数描述 |
| -------- | ------ |
:--- |
-------------- |
| propName | string | 是 |
要更新或创建的key值。
|
| newValue | T |
是 | 要更新或创建的value值
。 |
| 参数名 | 类型 | 必填 | 参数描述
|
| -------- | ------ |
---- | ---------
-------------- |
| propName | string | 是 |
LocalStorage中的属性名。
|
| newValue | T |
否 | 属性值,不能为undefined或者null
。 |
**返回值:**
| 类型 | 描述 |
| ------- | ---------------------------------------- |
| boolean | 如果已存在与给定键名字相同的属性,更新其值且返回true。如果不存在具有给定名称的属性,在LocalStorage中创建具有给定默认值的新属性,默认值必须是T类型,不允许undefined 或 null 。 |
| boolean | 如果设置的newValue是undefined或者null,返回false。
<br/>
如果LocalStorage存在propName,则更新其值为newValue,返回true。
<br/>
如果LocalStorage不存在propName,则创建propName,并初始化其值为newValue,返回true。 |
```
ts
let
storage
=
new
LocalStorage
()
storage
.
setOrCreate
(
'
storageSimpleProp
'
,
121
)
let
storage
:
LocalStorage
=
new
LocalStorage
({
'
PropA
'
:
47
});
let
res
:
boolean
=
storage
.
setOrCreate
(
'
PropA
'
,
121
);
// true
let
res1
:
boolean
=
storage
.
setOrCreate
(
'
PropB
'
,
111
);
// true
let
res2
:
boolean
=
storage
.
setOrCreate
(
'
PropB
'
,
undefined
);
// false
```
### link<sup>9+</sup>
link
\<
T>(propName: string): T
link
<
T
>
(propName: string): SubscribedAbstractProperty
<
T
>
与localStorage双向数据绑定。
如果给定的propName在LocalStorage实例中存在,则返回与LocalStorage中propName对应属性的双向绑定数据。
双向绑定数据的修改会被同步回LocalStorage中,LocalStorage会将变化同步到所有绑定该propName的数据和Component中。
如果LocalStorage中不存在propName,则返回undefined。
**参数:**
| 参数名 | 类型 | 必填 | 参数描述 |
| -------- | ------ | ---- | ----------- |
| propName | string | 是 |
要双向绑定的属性名称
。 |
| 参数名 | 类型 | 必填 | 参数描述
|
| -------- | ------ | ---- | -----------
-------
|
| propName | string | 是 |
LocalStorage中的属性名
。 |
**返回值:**
| 类型 | 描述 |
| ---- | ---------------------------------------- |
| T | 如果存在具有给定键的属性,返回到此属性的双向绑定,该双向绑定意味着变量或者组件对数据的更改将同步到LocalStorage,然后通过LocalStorage实例同步到任何变量或组件。如果不存在给定键的属性,返回undefined。 |
| 类型 | 描述 |
| ----------------------------------- | ---------------------------------------- |
| SubscribedAbstractProperty
<
T
>
| SubscribedAbstractProperty
<
T
>
的实例,如果AppStorage不存在对应的propName,再返回undefined。 |
```
ts
let
storage
=
new
LocalStorage
()
let
localStorage
=
storage
.
link
(
'
storageSimpleProp
'
)
let
storage
:
LocalStorage
=
new
LocalStorage
({
'
PropA
'
:
47
});
let
linkToPropA1
:
SubscribedAbstractProperty
<
number
>
=
storage
.
link
(
'
PropA
'
);
let
linkToPropA2
:
SubscribedAbstractProperty
<
number
>
=
storage
.
link
(
'
PropA
'
);
// linkToPropA2.get() == 47
linkToPropA1
.
set
(
48
);
// 双向同步: linkToPropA1.get() == linkToPropA2.get() == 48
```
### setAndLink<sup>9+</sup>
setAndLink
\<
T>(propName: string, defaultValue: T): T
setAndLink
<
T
>
(propName: string, defaultValue: T): SubscribedAbstractProperty
<
T
>
与
link接口类似,双向数据绑定localStorage
。
与
Link接口类似,如果给定的propName在LocalStorage存在,则返回该propName对应的属性的双向绑定数据。如果不存在,则使用defaultValue在LocalStorage创建和初始化propName,返回其双向绑定数据
。
**参数:**
| 参数名 | 类型 | 必填 | 参数描述 |
| ------------ | ------ | ---- | ----------- |
| propName | string | 是 |
要进行创建的key值。
|
| defaultValue | T | 是 |
要进行设置的默认值。
|
| 参数名 | 类型 | 必填 | 参数描述
|
| ------------ | ------ | ---- | -----------
-----------------------------
|
| propName | string | 是 |
LocalStorage中的属性名。
|
| defaultValue | T | 是 |
当propName在LocalStorage中不存在,使用default在LocalStorage中初始化对应的propName。
|
**返回值:**
| 类型 | 描述 |
| ----- | ---------------------------------------- |
| @Link | 与Link接口类似,如果当前的key保存于LocalStorage,返回该key值对应的value值。如果该key值未被创建,则创建一个对应的defaultValue的Link返回。 |
| 类型 | 描述 |
| ----------------------------------- | ---------------------------------------- |
| SubscribedAbstractProperty
<
T
>
| SubscribedAbstractProperty
<
T
>
的实例,如果AppStorage不存在对应的propName,再返回undefined。 |
```
ts
let
storage
=
new
LocalStorage
()
let
localStorage
=
storage
.
setAndLink
(
'
storageSimpleProp
'
,
121
)
let
storage
:
LocalStorage
=
new
LocalStorage
({
'
PropA
'
:
47
});
let
link1
:
SubscribedAbstractProperty
<
number
>
=
storage
.
setAndLink
(
'
PropB
'
,
49
);
// Create PropB 49
var
link2
:
SubscribedAbstractProperty
<
number
>
=
storage
.
setAndLink
(
'
PropA
'
,
50
);
// PropA exists, remains 47
```
### prop<sup>9+</sup>
prop
\<
T>(propName: string): T
prop
<
T
>
(propName: string): SubscribedAbstractProperty
<
T
>
单向属性绑定的一种。更新组件的状态
。
如果给定的propName在LocalStorage存在,则返回与LocalStorage中propName对应属性的单向绑定数据。如果LocalStorage中不存在propName,则返回undefined。单向绑定数据的修改不会被同步回LocalStorage中
。
**参数:**
| 参数名 | 类型 | 必填 | 参数描述 |
| -------- | ------ | ---- | ------------- |
| propName | string | 是 |
要单向数据绑定的key值
。 |
| 参数名 | 类型 | 必填 | 参数描述
|
| -------- | ------ | ---- | -------------
-----
|
| propName | string | 是 |
LocalStorage中的属性名
。 |
**返回值:**
| 类型 | 描述 |
| ----- | ---------------------------------------- |
| @Prop | 如果存在具有给定键的属性,返回此属性的单向数据绑定。该单向绑定意味着只能通过LocalStorage将属性的更改同步到变量或组件。该方法返回的变量为不可变变量,适用于可变和不可变的状态变量。如果此键的属性不存在则返回undefined。 |
| 类型 | 描述 |
| ----------------------------------- | ---------------------------------------- |
| SubscribedAbstractProperty
<
T
>
| SubscribedAbstractProperty
<
T
>
的实例,如果AppStorage不存在对应的propName,在返回undefined。 |
```
ts
let
storage
=
new
LocalStorage
()
let
localStorage
=
storage
.
prop
(
'
storageSimpleProp
'
)
let
storage
:
LocalStorage
=
new
LocalStorage
({
'
PropA
'
:
47
});
let
prop1
:
SubscribedAbstractProperty
<
number
>
=
storage
.
prop
(
'
PropA
'
);
let
prop2
:
SubscribedAbstractProperty
<
number
>
=
storage
.
prop
(
'
PropA
'
);
prop1
.
set
(
1
);
// one-way sync: prop1.get()=1; but prop2.get() == 47
```
### setAndProp<sup>9+</sup>
setAndProp
\<
T>(propName: string, defaultValue: T): T
setAndProp
<
T
>
(propName: string, defaultValue: T): SubscribedAbstractProperty
<
T
>
与Prop接口类似,存在localStorage的单向数据绑定prop值
。
propName在LocalStorage存在,则返回该propName对应的属性的单向绑定数据。如果不存在,则使用defaultValue在LocalStorage创建和初始化propName对应的属性,返回其单向绑定数据
。
**参数:**
| 参数名 | 类型 | 必填 | 参数描述 |
| ------------ | ------ | ---- | -------------- |
| propName | string | 是 |
要保存的键值对中的key值。
|
| defaultValue | T | 是 |
创建的默认值。
|
| 参数名 | 类型 | 必填 | 参数描述
|
| ------------ | ------ | ---- | --------------
--------------------------
|
| propName | string | 是 |
LocalStorage中的属性名。
|
| defaultValue | T | 是 |
当propName在AppStorage中不存在,使用default在AppStorage中初始化对应的propName。
|
**返回值:**
| 类型 | 描述 |
| ----- | ---------------------------------------- |
| @Prop | 如果当前的key保存与LocalStorage,返回该key值对应的value值。如果该key值未被创建,则创建一个对应的defaultValue的Prop返回。 |
| 类型 | 描述 |
| ----------------------------------- | ---------------------------------------- |
| SubscribedAbstractProperty
<
T
>
| SubscribedAbstractProperty
<
T
>
的实例,和AppStorage中propName对应属性的单向绑定的数据。 |
```
ts
let
storage
=
new
LocalStorage
()
let
localStorage
=
storage
.
setAndProp
(
'
storageSimpleProp
'
,
121
)
let
storage
:
LocalStorage
=
new
LocalStorage
({
'
PropA
'
:
47
});
let
prop
:
SubscribedAbstractProperty
<
number
>
=
storage
.
setAndProp
(
'
PropB
'
,
49
);
// PropA -> 47, PropB -> 49
```
### delete<sup>9+</sup>
delete(propName: string): boolean
删除key指定的键值对。
在LocalStorage中删除propName对应的属性。删除属性的前提是该属性已经没有订阅者,如果有则返回false。删除成功则返回true。
属性的订阅者是link,prop接口绑定的propName,以及
\@
LocalStorageLink('propName')和
\@
LocalStorageProp('propName')。如果自定义组件Component中使用或者SubscribedAbstractProperty(link和prop接口的返回类型)依旧有同步关系,则该属性不能从LocalStorage中删除。
**参数:**
| 参数名 | 类型 | 必填 | 参数描述 |
| -------- | ------ |
:--- |
------------ |
| propName | string | 是 |
要删除的属性的key值
。 |
| 参数名 | 类型 | 必填 | 参数描述
|
| -------- | ------ |
---- | ------
------------ |
| propName | string | 是 |
LocalStorage中的属性名
。 |
**返回值:**
| 类型 | 描述 |
| ------- | ---------------------------------------- |
| boolean | 删除key指定的键值对。存在且删除成功,返回true。不存在、删除失败或有状态变量依旧引用propName,返回false。 |
| boolean | 如果LocalStorage中有对应的属性,且该属性已经没有订阅者,则删除成功返回true。如果属性不存在,或者该属性还存在订阅者,则返回false。 |
```
ts
let
storage
=
new
LocalStorage
()
storage
.
delete
(
'
storageSimpleProp
'
)
let
storage
:
LocalStorage
=
new
LocalStorage
({
'
PropA
'
:
47
});
storage
.
link
(
'
PropA
'
);
let
res
:
boolean
=
storage
.
delete
(
'
PropA
'
);
// false, PropA still has a subscriber
let
res1
:
boolean
=
storage
.
delete
(
'
PropB
'
);
// false, PropB is not in storage
storage
.
setOrCreate
(
'
PropB
'
,
48
);
let
res2
:
boolean
=
storage
.
delete
(
'
PropB
'
);
// true, PropB is deleted from storage successfully
```
### keys<sup>9+</sup>
keys(): IterableIterator
\<
string>
keys(): IterableIterator
<
string
>
查找所有键
。
返回AppStorage中所有的属性名
。
**返回值:**
| 类型 | 描述 |
| -------------- | ------------------- |
| array
\<
string> | 返回包含所有键不可序列化的字符串数组。 |
| 类型 | 描述 |
| ------------------------------ | -------------------- |
| IterableIterator
<
string
>
| LocalStorage中所有的属性名。 |
```
ts
let
storage
=
new
LocalStorage
()
let
simple
=
storage
.
keys
()
let
storage
:
LocalStorage
=
new
LocalStorage
({
'
PropA
'
:
47
});
let
keys
:
IterableIterator
<
string
>
=
storage
.
keys
();
```
### size<sup>9+</sup>
size(): number
存在的键值对的个数
。
返回LocalStorage中的属性数量
。
**返回值:**
...
...
@@ -574,191 +686,272 @@ size(): number
| ------ | --------- |
| number | 返回键值对的数量。 |
```
ts
let
storage
=
new
LocalStorage
()
let
simple
=
storage
.
size
()
let
storage
:
LocalStorage
=
new
LocalStorage
({
'
PropA
'
:
47
});
let
res
:
number
=
storage
.
size
();
// 1
```
### Clear<sup>9+</sup>
### clear<sup>9+</sup>
clear(): boolean
删除所有的属性。
清除LocalStorage的所有的属性。在LocalStorage中清除所有属性的前提是已经没有任何订阅者。如果有则返回false;清除成功返回true。
**返回值:**
| 类型 | 描述 |
| ------- | --------------------------------- |
| boolean | 删除所有的属性,如果当前有状态变量依旧引用此属性,返回false。 |
| 类型 | 描述 |
| ------- | ---------------------------------------- |
| boolean | 如果LocalStorage中的属性已经没有任何订阅者,则清除成功,返回true。否则返回false。 |
```
ts
let
storage
=
new
LocalStorage
()
let
simple
=
storage
.
clear
()
let
storage
:
LocalStorage
=
new
LocalStorage
({
'
PropA
'
:
47
});
let
res
:
boolean
=
storage
.
clear
();
// true, there are no subscribers
```
## PersistentStorage
### constructor
## SubscribedAbstractProperty
### get<sup>9+</sup>
abstract get(): T
读取从AppStorage/LocalStorage同步属性的数据。
**返回值:**
| 类型 | 描述 |
| ---- | ------------------------------- |
| T | AppStorage/LocalStorage同步属性的数据。 |
```
ts
AppStorage
.
SetOrCreate
(
'
PropA
'
,
47
);
let
prop1
=
AppStorage
.
Prop
(
'
PropA
'
);
prop1
.
get
();
// prop1.get()=47
```
### set<sup>9+</sup>
abstract set(newValue: T): void
constructor(appStorage: AppStorage, storage: Storage)
创建一个新的persistentstorage对象。
设置AppStorage/LocalStorage同步属性的数据。
**参数:**
| 参数名 | 类型 | 必填 | 参数描述 |
| ---------- | ---------- | ---- | ---------------- |
| appStorage | AppStorage | 是 | 保存所有属性及属性值的单例对象。 |
| storage | Storage | 是 | Storage实例对象。 |
| 参数名 | 类型 | 必填 | 参数描述 |
| -------- | ---- | ---- | ------- |
| newValue | T | 是 | 要设置的数据。 |
```
AppStorage.SetOrCreate('PropA', 47);
let prop1 = AppStorage.Prop('PropA');
prop1.set(1); // prop1.get()=1
```
### aboutToBeDeleted<sup>10+</sup>
abstract aboutToBeDeleted(): void
取消SubscribedAbstractProperty实例对AppStorage/LocalStorage单/双向同步关系。
```
ts
let
persistentstorage
=
new
PersistentStorage
(
AppStorage
,
Storage
)
AppStorage
.
SetOrCreate
(
'
PropA
'
,
47
);
let
link
=
AppStorage
.
SetAndLink
(
'
PropB
'
,
49
);
// PropA -> 47, PropB -> 49
link
.
aboutToBeDeleted
();
link
.
set
(
50
);
// PropB -> 49, link.get() --> undefined
```
## PersistentStorage
### PersistProp
PersistProp(key:string,defaultValue:T): void
static PersistProp
<
T
>
(key: string, defaultValue: T): void
将AppStorage中key对应的属性持久化到文件中。该接口的调用通常在访问AppStorage之前。
确定属性的类型和值的顺序如下:
关联命名的属性再AppStorage变为持久化数据。
1.
如果PersistentStorage文件中存在key对应的属性,在AppStorage中创建对应的propName,并用在PersistentStorage中找到的key的属性初始化。
2.
如果PersistentStorage文件中没有查询到key对应的属性,则在AppStorage中查找key对应的属性。如果找到key对应的属性,则将该属性持久化。
3.
如果AppStorage也没查找到key对应的属性,则在AppStorage中创建key对应的属性。用defaultValue初始化其值,并将该属性持久化。
根据上述的初始化流程,如果AppStorage中有该属性,则会使用其值,覆盖掉PersistentStorage文件中的值。由于AppStorage是内存内数据,该行为会导致数据丧失持久化能力。
**参数:**
| 参数名 | 类型 | 必填 | 参数描述 |
| ------------ | ------ | ---- | -------------- |
| key | string | 是 | 要关联的属性的key值。 |
| defaultValue | T | 是 | 要关联的属性的value值。 |
| 参数名 | 类型 | 必填 | 参数描述 |
| ------------ | ------ | ---- | ---------------------------------------- |
| key | string | 是 | 属性名。 |
| defaultValue | T | 是 | 在PersistentStorage和AppStorage未查询到时,则使用默认值初始化初始化它。不允许为undefined和null。 |
**示例:**
```
ts
PersistentStorage
.
PersistProp
(
'
highScore
'
,
'
0
'
)
PersistentStorage
.
PersistProp
(
'
highScore
'
,
'
0
'
)
;
```
### DeleteProp
DeleteProp(key: string): void
static
DeleteProp(key: string): void
取消双向数据绑定,该属性值将从持久存储中删除
。
PersistProp的逆向操作。将key对应的属性从PersistentStorage删除,后续AppStorage的操作,对PersistentStorage不会再有影响
。
**参数:**
| 参数名 | 类型 | 必填 | 参数描述 |
| ---- | ------ | ---- | ------------ |
| key | string | 是 | 要取消的属性的key值。 |
| 参数名 | 类型 | 必填 | 参数描述 |
| ---- | ------ | ---- | ----------------------- |
| key | string | 是 | PersistentStorage中的属性名。 |
```
ts
PersistentStorage
.
DeleteProp
(
'
highScore
'
)
PersistentStorage
.
DeleteProp
(
'
highScore
'
)
;
```
### PersistProps
PersistProps(properties: {key: string, defaultValue: any
}[]): void
static PersistProps(properties: {key: string, defaultValue: any;
}[]): void
关联多个命名的属性绑定
。
行为和PersistProp类似,不同在于可以一次性持久化多个数据,适合在应用启动的时候初始化
。
**参数:**
| 参数名 | 类型 | 必填 | 参数描述 |
| ---- | ---------------------------------- | ---- | --------- |
| key | {key: string, defaultValue: any}[] | 是 | 要关联的属性数组。 |
| 参数名 | 类型 | 必填 | 参数描述 |
| ---------- | ---------------------------------------- | ---- | ---------------------------------------- |
| properties | {key:
string,
defaultValue:
any}[] | 是 | 持久化数组,启动key为属性名,defaultValue为默认值。规则同PersistProp。 |
```
ts
PersistentStorage
.
PersistProps
([{
key
:
'
highScore
'
,
defaultValue
:
'
0
'
},{
key
:
'
wightScore
'
,
defaultValue
:
'
1
'
}])
PersistentStorage
.
PersistProps
([{
key
:
'
highScore
'
,
defaultValue
:
'
0
'
},
{
key
:
'
wightScore
'
,
defaultValue
:
'
1
'
}]);
```
### Keys
Keys(): Array
\<
string>
static Keys(): Array
<
string
>
返回所有持久化属性的
标记
。
返回所有持久化属性的
key的数组
。
**返回值:**
| 类型 | 描述 |
| -------------- | ------------- |
| Array
\<
string> | 返回所有持久化属性的标记。 |
| 类型 | 描述 |
| ------------------- | ----------------- |
| Array
<
string
>
| 返回所有持久化属性的key的数组。 |
```
ts
let
simple
=
PersistentStorage
.
Keys
()
let
keys
:
Array
<
string
>
=
PersistentStorage
.
Keys
();
```
> **说明:**
>
> - PersistProp接口使用时,需要保证输入对应的key应当在AppStorage存在。
>
> - DeleteProp接口使用时,只能对本次启动已经link过的数据生效。
## Environment
### constructor
创建一个environment对象。
### EnvProp
```
ts
let
simple
=
new
Environment
()
```
static EnvProp
<
S
>
(key: string, value: S): boolean
### EnvProp
将Environment的内置环境变量key存入AppStorage中。如果系统中未查询到Environment环境变量key的值,则使用默认值value,存入成功,返回true。如果AppStorage已经有对应的key,则返回false。
EnvProp
\<
S>(key: string, value: S): boolean
所以建议在程序启动的时候调用该接口。
关联此系统项到AppStorage中,建议在app启动时使用此接口。如果该属性在AppStorage已存在,返回false。请勿使用AppStorage中的变量,在调用此方法关联环境变量
。
在没有调用EnvProp,就使用AppStorage读取环境变量是错误的
。
**参数:**
| 参数名 | 类型 | 必填 | 参数描述
| 参数描述
|
| ----- | ------ | ---- | ----------
|
------------------------- |
| key | string | 是 |
要关联的key值 | 要关联的key值,支持的范围详见内置环境变量说明。
|
| value | S | 是 |
要关联的value值 | 要关联的value值。
|
| 参数名 | 类型 | 必填 | 参数描述
|
| ----- | ------ | ---- | ----------
----
------------------------- |
| key | string | 是 |
环境变量名称,支持的范围详见
[
内置环境变量说明
](
#内置环境变量说明
)
。
|
| value | S | 是 |
查询不到环境变量key,则使用value作为默认值存入AppStorage中。
|
**返回值:**
| 类型 | 描述 |
| ------- | ---------------------- |
| boolean | 返回该属性在AppStorage中是否存在。 |
| 类型 | 描述 |
| ------- | ---------------------------------------- |
| boolean | 如果key对应的属性在AppStorage中存在,则返回false。不存在则在AppStorage中创建key对应的属性,返回true。 |
**示例:**
**内置环境变量说明:**
```
ts
Environment
.
EnvProp
(
'
accessibilityEnabled
'
,
'
default
'
);
```
### 内置环境变量说明
| key | 类型 | 说明 |
| -------------------- | --------------- | ---------------------------------------- |
| accessibilityEnabled | string | 无障碍屏幕朗读是否启用。 |
| colorMode | ColorMode | 深浅色模式,可选值为:
<br
>
- ColorMode.LIGHT:浅色模式;
<br>
-
ColorMode.DARK:深色模式。 |
| colorMode | ColorMode | 深浅色模式,可选值为:
<br
/>
-
ColorMode.LIGHT:浅色模式;
<br/>
-
ColorMode.DARK:深色模式。 |
| fontScale | number | 字体大小比例。 |
| fontWeightScale | number | 字重比例。 |
| layoutDirection | LayoutDirection | 布局方向类型,可选值为:
<br
>
- LayoutDirection.LTR:从左到右;
<br>
-
LayoutDirection.RTL:从右到左。 |
| layoutDirection | LayoutDirection | 布局方向类型,可选值为:
<br
/>
-
LayoutDirection.LTR:从左到右;
<br/>
-
LayoutDirection.RTL:从右到左。 |
| languageCode | string | 当前系统语言,小写字母,例如zh。 |
```
ts
Environment
.
EnvProp
(
'
accessibilityEnabled
'
,
'
default
'
)
```
### EnvProps
EnvProps(props: {key: string, defaultValue: any
}[]): void
static EnvProps(props: {key: string; defaultValue: any;
}[]): void
关联此系统项数组到AppStorage中
和EnvProp类似,不同点在于参数为数组,可以一次性初始化多个数据。建议在应用启动时调用,将系统环境变量批量存入AppStorage中。
**参数:**
| 参数名 | 类型 | 必填 | 参数描述 | 参数描述 |
| ---- | ---------------------------------- | ---- | --------- | --------- |
| key | {key: string, defaultValue: any}[] | 是 | 要关联的属性数组。 | 要关联的属性数组。 |
| 参数名 | 类型 | 必填 | 参数描述 |
| ----- | ---------------------------------------- | ---- | ------------------ |
| props | {key:
string,
defaultValue:
any}[] | 是 | 系统环境变量和默认值的键值对的数组。 |
```
ts
Environment
.
EnvProps
([{
key
:
'
accessibilityEnabled
'
,
defaultValue
:
'
default
'
},{
key
:
'
accessibilityUnEnabled
'
,
defaultValue
:
'
undefault
'
}])
Environment
.
EnvProps
([{
key
:
'
accessibilityEnabled
'
,
defaultValue
:
'
default
'
},
{
key
:
'
languageCode
'
,
defaultValue
:
'
en
'
},
{
key
:
'
prop
'
,
defaultValue
:
'
hhhh
'
}]);
```
### Keys
Keys(): Array
\<
string>
static Keys(): Array
<
string
>
返回
关联的系统项
。
返回
环境变量的属性key的数组
。
**返回值:**
| 类型 | 描述 |
| -------------- | ----------- |
| Array
\<
string> | 返回关联的系统项数组。 |
| 类型 | 描述 |
| ------------------- | ----------- |
| Array
<
string
>
| 返回关联的系统项数组。 |
```
ts
let
simple
=
Environment
.
Keys
()
```
Environment
.
EnvProps
([{
key
:
'
accessibilityEnabled
'
,
defaultValue
:
'
default
'
},
{
key
:
'
languageCode
'
,
defaultValue
:
'
en
'
},
{
key
:
'
prop
'
,
defaultValue
:
'
hhhh
'
}]);
let
keys
:
Array
<
string
>
=
Environment
.
Keys
();
// accessibilityEnabled, languageCode, prop
```
\ No newline at end of file
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录