Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Docs
提交
7cde08ba
D
Docs
项目概览
OpenHarmony
/
Docs
1 年多 前同步成功
通知
159
Star
292
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看板
未验证
提交
7cde08ba
编写于
8月 24, 2023
作者:
O
openharmony_ci
提交者:
Gitee
8月 24, 2023
浏览文件
操作
浏览文件
下载
差异文件
!22669 状态管理文档修改
Merge pull request !22669 from 181******72/master
上级
71938187
d1d325e0
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
70 addition
and
7 deletion
+70
-7
zh-cn/application-dev/quick-start/arkts-observed-and-objectlink.md
...lication-dev/quick-start/arkts-observed-and-objectlink.md
+63
-2
zh-cn/application-dev/reference/arkui-ts/ts-state-management.md
...application-dev/reference/arkui-ts/ts-state-management.md
+7
-5
未找到文件。
zh-cn/application-dev/quick-start/arkts-observed-and-objectlink.md
浏览文件 @
7cde08ba
...
...
@@ -35,7 +35,7 @@
| ----------------- | ---------------------------------------- |
| 装饰器参数 | 无 |
| 同步类型 | 不与父组件中的任何类型同步变量。 |
| 允许装饰的变量类型 | 必须为被
\@
Observed装饰的class实例,必须指定类型。
<br/>不支持简单类型,可以使用[\@Prop](arkts-prop.md)。<br/>
\@
ObjectLink的属性是可以改变的,但是变量的分配是不允许的,也就是说这个装饰器装饰变量是只读的,不能被改变。 |
| 允许装饰的变量类型 | 必须为被
\@
Observed装饰的class实例,必须指定类型。
<br/>不支持简单类型,可以使用[\@Prop](arkts-prop.md)。<br/>
支持继承Date或者Array的class实例,示例见[观察变化](#观察变化)。<br/>
\@
ObjectLink的属性是可以改变的,但是变量的分配是不允许的,也就是说这个装饰器装饰变量是只读的,不能被改变。 |
| 被装饰变量的初始值 | 不允许。 |
\@
ObjectLink装饰的数据为可读示例。
...
...
@@ -75,7 +75,7 @@ this.objLink= ...
## 观察变化和行为表现
### 观察
的
变化
### 观察变化
\@
Observed装饰的类,如果其属性为非简单类型,比如class、Object或者数组,也需要被
\@
Observed装饰,否则将观察不到其属性的变化。
...
...
@@ -121,6 +121,67 @@ this.b.a.c = 5
-
如果数据源是数组,则可以观察到数组item的替换,如果数据源是class,可观察到class的属性的变化,示例请参考
[
对象数组
](
#对象数组
)
。
继承Date的class时,可以观察到Date整体的赋值,同时可通过调用Date的接口
`setFullYear`
,
`setMonth`
,
`setDate`
,
`setHours`
,
`setMinutes`
,
`setSeconds`
,
`setMilliseconds`
,
`setTime`
,
`setUTCFullYear`
,
`setUTCMonth`
,
`setUTCDate`
,
`setUTCHours`
,
`setUTCMinutes`
,
`setUTCSeconds`
,
`setUTCMilliseconds`
更新Date的属性。
```
ts
@
Observed
class
DateClass
extends
Date
{
constructor
(
args
:
any
)
{
super
(
args
)
}
}
@
Observed
class
ClassB
{
public
a
:
DateClass
;
constructor
(
a
:
DateClass
)
{
this
.
a
=
a
;
}
}
@
Component
struct
ViewA
{
label
:
string
=
'
date
'
;
@
ObjectLink
a
:
DateClass
;
build
()
{
Column
()
{
Button
(
`child increase the day by 1`
)
.
onClick
(()
=>
{
this
.
a
.
setDate
(
this
.
a
.
getDate
()
+
1
);
})
DatePicker
({
start
:
new
Date
(
'
1970-1-1
'
),
end
:
new
Date
(
'
2100-1-1
'
),
selected
:
this
.
a
})
}
}
}
@
Entry
@
Component
struct
ViewB
{
@
State
b
:
ClassB
=
new
ClassB
(
new
DateClass
(
'
2023-1-1
'
));
build
()
{
Column
()
{
ViewA
({
label
:
'
date
'
,
a
:
this
.
b
.
a
})
Button
(
`parent update the new date`
)
.
onClick
(()
=>
{
this
.
b
.
a
=
new
DateClass
(
'
2023-07-07
'
);
})
Button
(
`ViewB: this.b = new ClassB(new DateClass('2023-08-20'))`
)
.
onClick
(()
=>
{
this
.
b
=
new
ClassB
(
new
DateClass
(
'
2023-08-20
'
));
})
}
}
}
```
### 框架行为
...
...
zh-cn/application-dev/reference/arkui-ts/ts-state-management.md
浏览文件 @
7cde08ba
...
...
@@ -193,7 +193,7 @@ let value: number = AppStorage.get('PropA'); // 47
static set
<
T
>
(propName: string, newValue: T): boolean
在AppStorage中设置propName对应属性的值。
在AppStorage中设置propName对应属性的值。
如果newValue的值和propName对应属性的值相同,即不需要做赋值操作,状态变量不会通知UI刷新propName对应属性的值。
**参数:**
...
...
@@ -220,7 +220,8 @@ let res1: boolean = AppStorage.set('PropB', 47) // false
static setOrCreate
<
T
>
(propName: string, newValue: T): void
propName如果已经在AppStorage中存在,则设置propName对应是属性的值为newValue。如果不存在,则创建propName属性,值为newValue。
如果propName已经在AppStorage中存在,并且newValue和propName对应属性的值不同,则设置propName对应属性的值为newValue,否则状态变量不会通知UI刷新propName对应属性的值。
如果propName不存在,则创建propName属性,值为newValue。
**参数:**
...
...
@@ -534,7 +535,7 @@ let res1: boolean = AppStorage.Set('PropB', 47) // false
static SetOrCreate
<
T
>
(propName: string, newValue: T): void
propName如果
已经在AppStorage中存在,则设置propName对应是属性的值为newValue。如果不存在,则创建propName属性,值为newValue。
如果propName
已经在AppStorage中存在,则设置propName对应是属性的值为newValue。如果不存在,则创建propName属性,值为newValue。
从API version 10开始废弃,推荐使用
[
setOrCreate10+
](
#setorcreate10
)
。
...
...
@@ -802,7 +803,7 @@ let value: number = storage.get('PropA'); // 47
set
<
T
>
(propName: string, newValue: T): boolean
在LocalStorage中设置propName对应属性的值。
在LocalStorage中设置propName对应属性的值。
如果newValue的值和propName对应属性的值相同,即不需要做赋值操作,状态变量不会通知UI刷新propName对应属性的值。
从API version 9开始,该接口支持在ArkTS卡片中使用。
...
...
@@ -831,7 +832,8 @@ let res1: boolean = storage.set('PropB', 47); // false
setOrCreate
<
T
>
(propName: string, newValue: T): boolean
propName如果已经在LocalStorage中存在,则设置propName对应是属性的值为newValue。如果不存在,则创建propName属性,初始化为newValue。
如果propName已经在AppStorage中存在,并且newValue和propName对应属性的值不同,则设置propName对应属性的值为newValue,否则状态变量不会通知UI刷新propName对应属性的值。
如果propName不存在,则创建propName属性,值为newValue。
从API version 9开始,该接口支持在ArkTS卡片中使用。
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录