Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Docs
提交
d6ccb467
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看板
提交
d6ccb467
编写于
7月 03, 2023
作者:
Z
zhuzijia
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
test
Signed-off-by:
N
zhuzijia
<
zhuzijia@huawei.com
>
Change-Id: I2b0668015ebf7f83bb858a945c68bef5393e83fe
上级
e08bf140
变更
8
隐藏空白更改
内联
并排
Showing
8 changed file
with
218 addition
and
187 deletion
+218
-187
zh-cn/application-dev/quick-start/arkts-appstorage.md
zh-cn/application-dev/quick-start/arkts-appstorage.md
+2
-2
zh-cn/application-dev/quick-start/arkts-link.md
zh-cn/application-dev/quick-start/arkts-link.md
+56
-1
zh-cn/application-dev/quick-start/arkts-localstorage.md
zh-cn/application-dev/quick-start/arkts-localstorage.md
+2
-176
zh-cn/application-dev/quick-start/arkts-observed-and-objectlink.md
...lication-dev/quick-start/arkts-observed-and-objectlink.md
+1
-1
zh-cn/application-dev/quick-start/arkts-prop.md
zh-cn/application-dev/quick-start/arkts-prop.md
+56
-1
zh-cn/application-dev/quick-start/arkts-provide-and-consume.md
.../application-dev/quick-start/arkts-provide-and-consume.md
+60
-4
zh-cn/application-dev/quick-start/arkts-state.md
zh-cn/application-dev/quick-start/arkts-state.md
+40
-2
zh-cn/application-dev/reference/arkui-ts/ts-universal-attributes-grid.md
...on-dev/reference/arkui-ts/ts-universal-attributes-grid.md
+1
-0
未找到文件。
zh-cn/application-dev/quick-start/arkts-appstorage.md
浏览文件 @
d6ccb467
...
@@ -34,7 +34,7 @@ AppStorage中的属性可以被双向同步,数据可以是存在于本地或
...
@@ -34,7 +34,7 @@ AppStorage中的属性可以被双向同步,数据可以是存在于本地或
|
\@
StorageProp变量装饰器 | 说明 |
|
\@
StorageProp变量装饰器 | 说明 |
| ------------------ | ---------------------------------------- |
| ------------------ | ---------------------------------------- |
| 装饰器参数 | key:常量字符串,必填(字符串需要有引号)。 |
| 装饰器参数 | key:常量字符串,必填(字符串需要有引号)。 |
| 允许装饰的变量类型 | Object
class、string、number、boolean、enum类型,以及这些类型的数组。嵌套类型的场景请参考
[
观察变化和行为表现
](
#观察变化和行为表现
)
。
<br/>
类型必须被指定,
且必须和LocalStorage中对应属性相同
。不支持any,不允许使用undefined和null。 |
| 允许装饰的变量类型 | Object
class、string、number、boolean、enum类型,以及这些类型的数组。嵌套类型的场景请参考
[
观察变化和行为表现
](
#观察变化和行为表现
)
。
<br/>
类型必须被指定,
建议和AppStorage中对应属性类型相同,否则会发生类型隐式转换,从而导致应用行为异常
。不支持any,不允许使用undefined和null。 |
| 同步类型 | 单向同步:从AppStorage的对应属性到组件的状态变量。
<br/>
组件本地的修改是允许的,但是AppStorage中给定的属性一旦发生变化,将覆盖本地的修改。 |
| 同步类型 | 单向同步:从AppStorage的对应属性到组件的状态变量。
<br/>
组件本地的修改是允许的,但是AppStorage中给定的属性一旦发生变化,将覆盖本地的修改。 |
| 被装饰变量的初始值 | 必须指定,如果AppStorage实例中不存在属性,则作为初始化默认值,并存入AppStorage中。 |
| 被装饰变量的初始值 | 必须指定,如果AppStorage实例中不存在属性,则作为初始化默认值,并存入AppStorage中。 |
...
@@ -92,7 +92,7 @@ AppStorage中的属性可以被双向同步,数据可以是存在于本地或
...
@@ -92,7 +92,7 @@ AppStorage中的属性可以被双向同步,数据可以是存在于本地或
|
\@
StorageLink变量装饰器 | 说明 |
|
\@
StorageLink变量装饰器 | 说明 |
| ------------------ | ---------------------------------------- |
| ------------------ | ---------------------------------------- |
| 装饰器参数 | key:常量字符串,必填(字符串需要有引号)。 |
| 装饰器参数 | key:常量字符串,必填(字符串需要有引号)。 |
| 允许装饰的变量类型 | Object、class、string、number、boolean、enum类型,以及这些类型的数组。嵌套类型的场景请参考
[
观察变化和行为表现
](
#观察变化和行为表现
)
。
<br/>
类型必须被指定,
且必须和AppStorage中对应属性相同
。不支持any,不允许使用undefined和null。 |
| 允许装饰的变量类型 | Object、class、string、number、boolean、enum类型,以及这些类型的数组。嵌套类型的场景请参考
[
观察变化和行为表现
](
#观察变化和行为表现
)
。
<br/>
类型必须被指定,
建议和AppStorage中对应属性类型相同,否则会发生类型隐式转换,从而导致应用行为异常
。不支持any,不允许使用undefined和null。 |
| 同步类型 | 双向同步:从AppStorage的对应属性到自定义组件,从自定义组件到AppStorage对应属性。 |
| 同步类型 | 双向同步:从AppStorage的对应属性到自定义组件,从自定义组件到AppStorage对应属性。 |
| 被装饰变量的初始值 | 必须指定,如果AppStorage实例中不存在属性,则作为初始化默认值,并存入AppStorage中。 |
| 被装饰变量的初始值 | 必须指定,如果AppStorage实例中不存在属性,则作为初始化默认值,并存入AppStorage中。 |
...
...
zh-cn/application-dev/quick-start/arkts-link.md
浏览文件 @
d6ccb467
...
@@ -20,7 +20,7 @@
...
@@ -20,7 +20,7 @@
| ----------- | ---------------------------------------- |
| ----------- | ---------------------------------------- |
| 装饰器参数 | 无 |
| 装饰器参数 | 无 |
| 同步类型 | 双向同步。
<br/>
父组件中
\@
State,
\@StorageLink和\@Link
和子组件
\@
Link可以建立双向数据同步,反之亦然。 |
| 同步类型 | 双向同步。
<br/>
父组件中
\@
State,
\@StorageLink和\@Link
和子组件
\@
Link可以建立双向数据同步,反之亦然。 |
| 允许装饰的变量类型 | Object、class、string、number、boolean、enum类型,以及这些类型的数组。
嵌套
类型的场景请参考
[
观察变化
](
#观察变化
)
。
<br/>
类型必须被指定,且和双向绑定状态变量的类型相同。
<br/>
不支持any,不支持简单类型和复杂类型的联合类型,不允许使用undefined和null。
<br/>
**说明:**
<br/>
不支持Length、ResourceStr、ResourceColor类型,Length、ResourceStr、ResourceColor为简单类型和复杂类型的联合类型。 |
| 允许装饰的变量类型 | Object、class、string、number、boolean、enum类型,以及这些类型的数组。
<br/>
支持Date类型。支持
类型的场景请参考
[
观察变化
](
#观察变化
)
。
<br/>
类型必须被指定,且和双向绑定状态变量的类型相同。
<br/>
不支持any,不支持简单类型和复杂类型的联合类型,不允许使用undefined和null。
<br/>
**说明:**
<br/>
不支持Length、ResourceStr、ResourceColor类型,Length、ResourceStr、ResourceColor为简单类型和复杂类型的联合类型。 |
| 被装饰变量的初始值 | 无,禁止本地初始化。 |
| 被装饰变量的初始值 | 无,禁止本地初始化。 |
...
@@ -48,6 +48,61 @@
...
@@ -48,6 +48,61 @@
-
当装饰的对象是array时,可以观察到数组添加、删除、更新数组单元的变化,示例请参考
[
数组类型的@Link
](
#数组类型的link
)
。
-
当装饰的对象是array时,可以观察到数组添加、删除、更新数组单元的变化,示例请参考
[
数组类型的@Link
](
#数组类型的link
)
。
-
当装饰的对象是Date时,可以观察到Date整体的赋值,同时可通过调用Date的接口
`setFullYear`
,
`setMonth`
,
`setDate`
,
`setHours`
,
`setMinutes`
,
`setSeconds`
,
`setMilliseconds`
,
`setTime`
,
`setUTCFullYear`
,
`setUTCMonth`
,
`setUTCDate`
,
`setUTCHours`
,
`setUTCMinutes`
,
`setUTCSeconds`
,
`setUTCMilliseconds`
更新Date的属性。
```
ts
@
Component
struct
DateComponent
{
@
Link
selectedDate
:
Date
;
build
()
{
Column
()
{
Button
(
`child increase the year by 1`
).
onClick
(()
=>
{
this
.
selectedDate
.
setFullYear
(
this
.
selectedDate
.
getFullYear
()
+
1
)
})
Button
(
'
child update the new date
'
)
.
margin
(
10
)
.
onClick
(()
=>
{
this
.
selectedDate
=
new
Date
(
'
2023-09-09
'
)
})
DatePicker
({
start
:
new
Date
(
'
1970-1-1
'
),
end
:
new
Date
(
'
2100-1-1
'
),
selected
:
this
.
selectedDate
})
}
}
}
@
Entry
@
Component
struct
ParentComponent
{
@
State
parentSelectedDate
:
Date
=
new
Date
(
'
2021-08-08
'
);
build
()
{
Column
()
{
Button
(
'
parent increase the month by 1
'
)
.
margin
(
10
)
.
onClick
(()
=>
{
this
.
parentSelectedDate
.
setMonth
(
this
.
parentSelectedDate
.
getMonth
()
+
1
)
})
Button
(
'
parent update the new date
'
)
.
margin
(
10
)
.
onClick
(()
=>
{
this
.
parentSelectedDate
=
new
Date
(
'
2023-07-07
'
)
})
DatePicker
({
start
:
new
Date
(
'
1970-1-1
'
),
end
:
new
Date
(
'
2100-1-1
'
),
selected
:
this
.
parentSelectedDate
})
DateComponent
({
selectedDate
:
this
.
parentSelectedDate
})
}
}
}
```
### 框架行为
### 框架行为
...
...
zh-cn/application-dev/quick-start/arkts-localstorage.md
浏览文件 @
d6ccb467
...
@@ -37,7 +37,6 @@ LocalStorage根据与\@Component装饰的组件的的同步类型不同,提供
...
@@ -37,7 +37,6 @@ LocalStorage根据与\@Component装饰的组件的的同步类型不同,提供
-
LocalStorage创建后,命名属性的类型不可更改。后续调用Set时必须使用相同类型的值。
-
LocalStorage创建后,命名属性的类型不可更改。后续调用Set时必须使用相同类型的值。
-
LocalStorage是页面级存储,
[
GetShared
](
../reference/arkui-ts/ts-state-management.md#getshared9
)
接口仅能获取当前stage,通过
[
windowStage.loadContent
](
../reference/apis/js-apis-window.md#loadcontent9
)
传入的LocalStorage实例,否则返回undefined。例子可见
[
将LocalStorage实例从UIAbility共享到一个或多个视图
](
#将localstorage实例从uiability共享到一个或多个视图
)
。
-
LocalStorage是页面级存储,
[
GetShared
](
../reference/arkui-ts/ts-state-management.md#getshared9
)
接口仅能获取当前stage,通过
[
windowStage.loadContent
](
../reference/apis/js-apis-window.md#loadcontent9
)
传入的LocalStorage实例,否则返回undefined。例子可见
[
将LocalStorage实例从UIAbility共享到一个或多个视图
](
#将localstorage实例从uiability共享到一个或多个视图
)
。
-
状态装饰器装饰的变量,改变会引起UI的渲染更新,如果改变的变量不是用于UI更新,只是用于消息传递,推荐使用 emitter方式。例子可见
[
以持久化方式订阅某个事件并接收事件回调
](
#以持久化方式订阅某个事件并接收事件回调
)
。
## \@LocalStorageProp
## \@LocalStorageProp
...
@@ -61,7 +60,7 @@ LocalStorage根据与\@Component装饰的组件的的同步类型不同,提供
...
@@ -61,7 +60,7 @@ LocalStorage根据与\@Component装饰的组件的的同步类型不同,提供
|
\@
LocalStorageProp变量装饰器 | 说明 |
|
\@
LocalStorageProp变量装饰器 | 说明 |
| ----------------------- | ---------------------------------------- |
| ----------------------- | ---------------------------------------- |
| 装饰器参数 | key:常量字符串,必填(字符串需要有引号)。 |
| 装饰器参数 | key:常量字符串,必填(字符串需要有引号)。 |
| 允许装饰的变量类型 | Object、class、string、number、boolean、enum类型,以及这些类型的数组。嵌套类型的场景请参考
[
观察变化和行为表现
](
#观察变化和行为表现
)
。
<br/>
类型必须被指定,
且必须和LocalStorage中对应属性相同
。不支持any,不允许使用undefined和null。 |
| 允许装饰的变量类型 | Object、class、string、number、boolean、enum类型,以及这些类型的数组。嵌套类型的场景请参考
[
观察变化和行为表现
](
#观察变化和行为表现
)
。
<br/>
类型必须被指定,
建议和LocalStorage中对应属性类型相同,否则会发生类型隐式转换,从而导致应用行为异常
。不支持any,不允许使用undefined和null。 |
| 同步类型 | 单向同步:从LocalStorage的对应属性到组件的状态变量。组件本地的修改是允许的,但是LocalStorage中给定的属性一旦发生变化,将覆盖本地的修改。 |
| 同步类型 | 单向同步:从LocalStorage的对应属性到组件的状态变量。组件本地的修改是允许的,但是LocalStorage中给定的属性一旦发生变化,将覆盖本地的修改。 |
| 被装饰变量的初始值 | 必须指定,如果LocalStorage实例中不存在属性,则作为初始化默认值,并存入LocalStorage中。 |
| 被装饰变量的初始值 | 必须指定,如果LocalStorage实例中不存在属性,则作为初始化默认值,并存入LocalStorage中。 |
...
@@ -119,7 +118,7 @@ LocalStorage根据与\@Component装饰的组件的的同步类型不同,提供
...
@@ -119,7 +118,7 @@ LocalStorage根据与\@Component装饰的组件的的同步类型不同,提供
|
\@
LocalStorageLink变量装饰器 | 说明 |
|
\@
LocalStorageLink变量装饰器 | 说明 |
| ----------------------- | ---------------------------------------- |
| ----------------------- | ---------------------------------------- |
| 装饰器参数 | key:常量字符串,必填(字符串需要有引号)。 |
| 装饰器参数 | key:常量字符串,必填(字符串需要有引号)。 |
| 允许装饰的变量类型 | Object、class、string、number、boolean、enum类型,以及这些类型的数组。嵌套类型的场景请参考
[
观察变化和行为表现
](
#观察变化和行为表现
)
。
<br/>
类型必须被指定,
且必须和LocalStorage中对应属性相同
。不支持any,不允许使用undefined和null。 |
| 允许装饰的变量类型 | Object、class、string、number、boolean、enum类型,以及这些类型的数组。嵌套类型的场景请参考
[
观察变化和行为表现
](
#观察变化和行为表现
)
。
<br/>
类型必须被指定,
建议和LocalStorage中对应属性类型相同,否则会发生类型隐式转换,从而导致应用行为异常
。不支持any,不允许使用undefined和null。 |
| 同步类型 | 双向同步:从LocalStorage的对应属性到自定义组件,从自定义组件到LocalStorage对应属性。 |
| 同步类型 | 双向同步:从LocalStorage的对应属性到自定义组件,从自定义组件到LocalStorage对应属性。 |
| 被装饰变量的初始值 | 必须指定,如果LocalStorage实例中不存在属性,则作为初始化默认值,并存入LocalStorage中。 |
| 被装饰变量的初始值 | 必须指定,如果LocalStorage实例中不存在属性,则作为初始化默认值,并存入LocalStorage中。 |
...
@@ -421,179 +420,6 @@ struct CompA {
...
@@ -421,179 +420,6 @@ struct CompA {
}
}
```
```
### 以持久化方式订阅某个事件并接收事件回调
推荐使用持久化方式订阅某个事件并接收事件回调,可以减少开销,增强代码的可读性。
```
ts
import
emitter
from
'
@ohos.events.emitter
'
;
let
NextID
:
number
=
0
;
class
ViewData
{
title
:
string
;
uri
:
Resource
;
color
:
Color
=
Color
.
Black
;
id
:
number
;
constructor
(
title
:
string
,
uri
:
Resource
)
{
this
.
title
=
title
;
this
.
uri
=
uri
this
.
id
=
NextID
++
;
}
}
@
Entry
@
Component
struct
Gallery2
{
dataList
:
Array
<
ViewData
>
=
[
new
ViewData
(
'
flower
'
,
$r
(
'
app.media.icon
'
)),
new
ViewData
(
'
OMG
'
,
$r
(
'
app.media.icon
'
)),
new
ViewData
(
'
OMG
'
,
$r
(
'
app.media.icon
'
))]
scroller
:
Scroller
=
new
Scroller
()
private
preIndex
:
number
=
-
1
build
()
{
Column
()
{
Grid
(
this
.
scroller
)
{
ForEach
(
this
.
dataList
,
(
item
:
ViewData
)
=>
{
GridItem
()
{
TapImage
({
uri
:
item
.
uri
,
index
:
item
.
id
})
}.
aspectRatio
(
1
)
.
onClick
(()
=>
{
if
(
this
.
preIndex
===
item
.
id
)
{
return
}
var
innerEvent
=
{
eventId
:
item
.
id
}
// 选中态:黑变红
var
eventData
=
{
data
:
{
"
colorTag
"
:
1
}
}
emitter
.
emit
(
innerEvent
,
eventData
)
if
(
this
.
preIndex
!=
-
1
)
{
console
.
info
(
`preIndex:
${
this
.
preIndex
}
, index:
${
item
.
id
}
, black`
)
var
innerEvent
=
{
eventId
:
this
.
preIndex
}
// 取消选中态:红变黑
var
eventData
=
{
data
:
{
"
colorTag
"
:
0
}
}
emitter
.
emit
(
innerEvent
,
eventData
)
}
this
.
preIndex
=
item
.
id
})
},
(
item
:
ViewData
)
=>
JSON
.
stringify
(
item
))
}.
columnsTemplate
(
'
1fr 1fr
'
)
}
}
}
@
Component
export
struct
TapImage
{
@
State
tapColor
:
Color
=
Color
.
Black
;
private
index
:
number
;
private
uri
:
Resource
;
onTapIndexChange
(
colorTag
:
emitter
.
EventData
)
{
this
.
tapColor
=
colorTag
.
data
.
colorTag
?
Color
.
Red
:
Color
.
Black
}
aboutToAppear
()
{
//定义事件ID
var
innerEvent
=
{
eventId
:
this
.
index
}
emitter
.
on
(
innerEvent
,
this
.
onTapIndexChange
.
bind
(
this
))
}
build
()
{
Column
()
{
Image
(
this
.
uri
)
.
objectFit
(
ImageFit
.
Cover
)
.
border
({
width
:
5
,
style
:
BorderStyle
.
Dotted
,
color
:
this
.
tapColor
})
}
}
}
```
以下示例为消息机制方式订阅事件,会导致回调监听的节点数较多,非常耗时,不推荐以此来实现应用代码。
```
ts
class
ViewData
{
title
:
string
;
uri
:
Resource
;
color
:
Color
=
Color
.
Black
;
constructor
(
title
:
string
,
uri
:
Resource
)
{
this
.
title
=
title
;
this
.
uri
=
uri
}
}
@
Entry
@
Component
struct
Gallery2
{
dataList
:
Array
<
ViewData
>
=
[
new
ViewData
(
'
flower
'
,
$r
(
'
app.media.icon
'
)),
new
ViewData
(
'
OMG
'
,
$r
(
'
app.media.icon
'
)),
new
ViewData
(
'
OMG
'
,
$r
(
'
app.media.icon
'
))]
scroller
:
Scroller
=
new
Scroller
()
build
()
{
Column
()
{
Grid
(
this
.
scroller
)
{
ForEach
(
this
.
dataList
,
(
item
:
ViewData
,
index
?:
number
)
=>
{
GridItem
()
{
TapImage
({
uri
:
item
.
uri
,
index
:
index
})
}.
aspectRatio
(
1
)
},
(
item
:
ViewData
,
index
?:
number
)
=>
{
return
JSON
.
stringify
(
item
)
+
index
;
})
}.
columnsTemplate
(
'
1fr 1fr
'
)
}
}
}
@
Component
export
struct
TapImage
{
@
StorageLink
(
'
tapIndex
'
)
@
Watch
(
'
onTapIndexChange
'
)
tapIndex
:
number
=
-
1
;
@
State
tapColor
:
Color
=
Color
.
Black
;
private
index
:
number
;
private
uri
:
Resource
;
// 判断是否被选中
onTapIndexChange
()
{
if
(
this
.
tapIndex
>=
0
&&
this
.
index
===
this
.
tapIndex
)
{
console
.
info
(
`tapindex:
${
this
.
tapIndex
}
, index:
${
this
.
index
}
, red`
)
this
.
tapColor
=
Color
.
Red
;
}
else
{
console
.
info
(
`tapindex:
${
this
.
tapIndex
}
, index:
${
this
.
index
}
, black`
)
this
.
tapColor
=
Color
.
Black
;
}
}
build
()
{
Column
()
{
Image
(
this
.
uri
)
.
objectFit
(
ImageFit
.
Cover
)
.
onClick
(()
=>
{
this
.
tapIndex
=
this
.
index
;
})
.
border
({
width
:
5
,
style
:
BorderStyle
.
Dotted
,
color
:
this
.
tapColor
})
}
}
}
```
> **说明:**
> **说明:**
>
>
> 对于开发者更建议使用这个方式来构建LocalStorage的实例,并且在创建LocalStorage实例的时候就写入默认值,因为默认值可以作为运行异常的备份,也可以用作页面的单元测试。
> 对于开发者更建议使用这个方式来构建LocalStorage的实例,并且在创建LocalStorage实例的时候就写入默认值,因为默认值可以作为运行异常的备份,也可以用作页面的单元测试。
...
...
zh-cn/application-dev/quick-start/arkts-observed-and-objectlink.md
浏览文件 @
d6ccb467
...
@@ -54,7 +54,7 @@ this.objLink= ...
...
@@ -54,7 +54,7 @@ this.objLink= ...
>
>
> - \@Prop装饰的变量和数据源的关系是是单向同步,\@Prop装饰的变量在本地拷贝了数据源,所以它允许本地更改,如果父组件中的数据源有更新,\@Prop装饰的变量本地的修改将被覆盖;
> - \@Prop装饰的变量和数据源的关系是是单向同步,\@Prop装饰的变量在本地拷贝了数据源,所以它允许本地更改,如果父组件中的数据源有更新,\@Prop装饰的变量本地的修改将被覆盖;
>
>
> - \@ObjectLink装饰的变量和数据源的关系是双向同步,\@ObjectLink装饰的变量相当于指向数据源的指针。
如果一旦发生\@ObjectLink装饰的变量的赋值,则同步链将被打断
。
> - \@ObjectLink装饰的变量和数据源的关系是双向同步,\@ObjectLink装饰的变量相当于指向数据源的指针。
禁止对\@ObjectLink装饰的变量赋值,如果一旦发生\@ObjectLink装饰的变量的赋值,则同步链将被打断。因为\@ObjectLink修饰的变量通过数据源(Object)引用来初始化。对于实现双向数据同步的@ObjectLink,赋值相当于更新父组件中的数组项或者class的属性,TypeScript/JavaScript不能实现,会发生运行时报错
。
## 变量的传递/访问规则说明
## 变量的传递/访问规则说明
...
...
zh-cn/application-dev/quick-start/arkts-prop.md
浏览文件 @
d6ccb467
...
@@ -24,7 +24,7 @@
...
@@ -24,7 +24,7 @@
| ----------- | ---------------------------------------- |
| ----------- | ---------------------------------------- |
| 装饰器参数 | 无 |
| 装饰器参数 | 无 |
| 同步类型 | 单向同步:对父组件状态变量值的修改,将同步给子组件
\@
Prop装饰的变量,子组件
\@
Prop变量的修改不会同步到父组件的状态变量上。嵌套类型的场景请参考
[
观察变化
](
#观察变化
)
。 |
| 同步类型 | 单向同步:对父组件状态变量值的修改,将同步给子组件
\@
Prop装饰的变量,子组件
\@
Prop变量的修改不会同步到父组件的状态变量上。嵌套类型的场景请参考
[
观察变化
](
#观察变化
)
。 |
| 允许装饰的变量类型 | Objec、class、string、number、boolean、enum类型,以及这些类型的数组。
<br/>不支持any,不支持简单类型和复杂类型的联合类型,不允许使用undefined和null。<br/>必须指定类型。<br/>**说明** :<br/>不支持Length、ResourceStr、ResourceColor类型,Length,ResourceStr、ResourceColor为简单类型和复杂类型的联合类型。<br/>在父组件中,传递给\@Prop装饰的值不能为undefined或者null,反例如下所示。<br/>CompA ({ aProp: undefined })<br/>CompA ({ aProp: null })<br/>\@Prop和[数据源](arkts-state-management-overview.md#基本概念)类型需要相同,有以下三种情况:<br/>- \@Prop装饰的变量和\@State以及其他装饰器同步时双方的类型必须相同,示例请参考[父组件@State到子组件@Prop简单数据类型同步](#父组件state到子组件prop简单数据类型同步)。<br/>- \@Prop装饰的变量和\@State以及其他装饰器装饰的数组的项同步时 ,\@Prop的类型需要和\@State装饰的数组的数组项相同,比如\@Prop : T和\@State : Array<T>,示例请参考[父组件@State数组中的项到子组件@Prop简单数据类型同步](#父组件state数组项到子组件prop简单数据类型同步);<br/>
-
当父组件状态变量为Object或者class时,
\@
Prop装饰的变量和父组件状态变量的属性类型相同,示例请参考
[
从父组件中的@State类对象属性到@Prop简单类型的同步
](
#从父组件中的state类对象属性到prop简单类型的同步
)
。 |
| 允许装饰的变量类型 | Objec、class、string、number、boolean、enum类型,以及这些类型的数组。
<br/>不支持any,不支持简单类型和复杂类型的联合类型,不允许使用undefined和null。<br/>
支持Date类型。<br/>支持类型的场景请参考[观察变化](#观察变化)。<br/>
必须指定类型。<br/>**说明** :<br/>不支持Length、ResourceStr、ResourceColor类型,Length,ResourceStr、ResourceColor为简单类型和复杂类型的联合类型。<br/>在父组件中,传递给\@Prop装饰的值不能为undefined或者null,反例如下所示。<br/>CompA ({ aProp: undefined })<br/>CompA ({ aProp: null })<br/>\@Prop和[数据源](arkts-state-management-overview.md#基本概念)类型需要相同,有以下三种情况:<br/>- \@Prop装饰的变量和\@State以及其他装饰器同步时双方的类型必须相同,示例请参考[父组件@State到子组件@Prop简单数据类型同步](#父组件state到子组件prop简单数据类型同步)。<br/>- \@Prop装饰的变量和\@State以及其他装饰器装饰的数组的项同步时 ,\@Prop的类型需要和\@State装饰的数组的数组项相同,比如\@Prop : T和\@State : Array<T>,示例请参考[父组件@State数组中的项到子组件@Prop简单数据类型同步](#父组件state数组项到子组件prop简单数据类型同步);<br/>
-
当父组件状态变量为Object或者class时,
\@
Prop装饰的变量和父组件状态变量的属性类型相同,示例请参考
[
从父组件中的@State类对象属性到@Prop简单类型的同步
](
#从父组件中的state类对象属性到prop简单类型的同步
)
。 |
| 被装饰变量的初始值 | 允许本地初始化。 |
| 被装饰变量的初始值 | 允许本地初始化。 |
...
@@ -134,6 +134,61 @@ this.title.push('3')
...
@@ -134,6 +134,61 @@ this.title.push('3')
-
除了
\@
State,数据源也可以用
\@
Link或
\@
Prop装饰,对
\@
Prop的同步机制是相同的。
-
除了
\@
State,数据源也可以用
\@
Link或
\@
Prop装饰,对
\@
Prop的同步机制是相同的。
-
数据源和
\@
Prop变量的类型需要相同,
\@
Prop允许简单类型和class类型。
-
数据源和
\@
Prop变量的类型需要相同,
\@
Prop允许简单类型和class类型。
-
当装饰的对象是Date时,可以观察到Date整体的赋值,同时可通过调用Date的接口
`setFullYear`
,
`setMonth`
,
`setDate`
,
`setHours`
,
`setMinutes`
,
`setSeconds`
,
`setMilliseconds`
,
`setTime`
,
`setUTCFullYear`
,
`setUTCMonth`
,
`setUTCDate`
,
`setUTCHours`
,
`setUTCMinutes`
,
`setUTCSeconds`
,
`setUTCMilliseconds`
更新Date的属性。
```
ts
@
Component
struct
DateComponent
{
@
Prop
selectedDate
:
Date
;
build
()
{
Column
()
{
Button
(
'
child update the new date
'
)
.
margin
(
10
)
.
onClick
(()
=>
{
this
.
selectedDate
=
new
Date
(
'
2023-09-09
'
)
})
Button
(
`child increase the year by 1`
).
onClick
(()
=>
{
this
.
selectedDate
.
setFullYear
(
this
.
selectedDate
.
getFullYear
()
+
1
)
})
DatePicker
({
start
:
new
Date
(
'
1970-1-1
'
),
end
:
new
Date
(
'
2100-1-1
'
),
selected
:
this
.
selectedDate
})
}
}
}
@
Entry
@
Component
struct
ParentComponent
{
@
State
parentSelectedDate
:
Date
=
new
Date
(
'
2021-08-08
'
);
build
()
{
Column
()
{
Button
(
'
parent update the new date
'
)
.
margin
(
10
)
.
onClick
(()
=>
{
this
.
parentSelectedDate
=
new
Date
(
'
2023-07-07
'
)
})
Button
(
'
parent increase the day by 1
'
)
.
margin
(
10
)
.
onClick
(()
=>
{
this
.
parentSelectedDate
.
setDate
(
this
.
parentSelectedDate
.
getDate
()
+
1
)
})
DatePicker
({
start
:
new
Date
(
'
1970-1-1
'
),
end
:
new
Date
(
'
2100-1-1
'
),
selected
:
this
.
parentSelectedDate
})
DateComponent
({
selectedDate
:
this
.
parentSelectedDate
})
}
}
}
```
### 框架行为
### 框架行为
...
...
zh-cn/application-dev/quick-start/arkts-provide-and-consume.md
浏览文件 @
d6ccb467
...
@@ -20,7 +20,7 @@
...
@@ -20,7 +20,7 @@
-
后代通过使用
\@
Consume去获取
\@
Provide提供的变量,建立在
\@
Provide和
\@
Consume之间的双向数据同步,与
\@
State/
\@
Link不同的是,前者可以在多层级的父子组件之间传递。
-
后代通过使用
\@
Consume去获取
\@
Provide提供的变量,建立在
\@
Provide和
\@
Consume之间的双向数据同步,与
\@
State/
\@
Link不同的是,前者可以在多层级的父子组件之间传递。
-
\@
Provide和
\@
Consume可以通过相同的变量名或者相同的变量别名绑定,
变量类型必须相同
。
-
\@
Provide和
\@
Consume可以通过相同的变量名或者相同的变量别名绑定,
建议类型相同,否则会发生类型隐式转换,从而导致应用行为异常
。
```
ts
```
ts
...
@@ -34,7 +34,7 @@
...
@@ -34,7 +34,7 @@
```
```
\@
Provide和
\@
Consume通过相同的变量名或者相同的变量别名绑定时,
\@
Provide修饰的变量和
\@
Consume修饰的变量是一对多的关系。不允许在同一个自定义组件内,包括其子组件中声明多个同名或者同别名的
\@
Provide装饰的变量。
\@
Provide和
\@
Consume通过相同的变量名或者相同的变量别名绑定时,
\@
Provide修饰的变量和
\@
Consume修饰的变量是一对多的关系。不允许在同一个自定义组件内,包括其子组件中声明多个同名或者同别名的
\@
Provide装饰的变量
,@Provide的属性名或别名需要唯一且确定,如果声明多个同名或者同别名的@Provide装饰的变量,会发生运行时报错
。
## 装饰器说明
## 装饰器说明
...
@@ -45,14 +45,14 @@
...
@@ -45,14 +45,14 @@
| -------------- | ---------------------------------------- |
| -------------- | ---------------------------------------- |
| 装饰器参数 | 别名:常量字符串,可选。
<br/>
如果指定了别名,则通过别名来绑定变量;如果未指定别名,则通过变量名绑定变量。 |
| 装饰器参数 | 别名:常量字符串,可选。
<br/>
如果指定了别名,则通过别名来绑定变量;如果未指定别名,则通过变量名绑定变量。 |
| 同步类型 | 双向同步。
<br/>
从
\@
Provide变量到所有
\@
Consume变量以及相反的方向的数据同步。双向同步的操作与
\@
State和
\@
Link的组合相同。 |
| 同步类型 | 双向同步。
<br/>
从
\@
Provide变量到所有
\@
Consume变量以及相反的方向的数据同步。双向同步的操作与
\@
State和
\@
Link的组合相同。 |
| 允许装饰的变量类型 | Object、class、string、number、boolean、enum类型,以及这些类型的数组。
嵌套
类型的场景请参考
[
观察变化
](
#观察变化
)
。
<br/>
不支持any,不支持简单类型和复杂类型的联合类型,不允许使用undefined和null。
<br/>
必须指定类型。
\@
Provide变量的
\@
Consume变量的类型必须相同。
<br/>
**说明:**
<br/>
不支持Length、ResourceStr、ResourceColor类型,Length、ResourceStr、ResourceColor为简单类型和复杂类型的联合类型。 |
| 允许装饰的变量类型 | Object、class、string、number、boolean、enum类型,以及这些类型的数组。
<br/>
支持Date类型。
<br/>
支持
类型的场景请参考
[
观察变化
](
#观察变化
)
。
<br/>
不支持any,不支持简单类型和复杂类型的联合类型,不允许使用undefined和null。
<br/>
必须指定类型。
\@
Provide变量的
\@
Consume变量的类型必须相同。
<br/>
**说明:**
<br/>
不支持Length、ResourceStr、ResourceColor类型,Length、ResourceStr、ResourceColor为简单类型和复杂类型的联合类型。 |
| 被装饰变量的初始值 | 必须指定。 |
| 被装饰变量的初始值 | 必须指定。 |
|
\@
Consume变量装饰器 | 说明 |
|
\@
Consume变量装饰器 | 说明 |
| -------------- | ---------------------------------------- |
| -------------- | ---------------------------------------- |
| 装饰器参数 | 别名:常量字符串,可选。
<br/>
如果提供了别名,则必须有
\@
Provide的变量和其有相同的别名才可以匹配成功;否则,则需要变量名相同才能匹配成功。 |
| 装饰器参数 | 别名:常量字符串,可选。
<br/>
如果提供了别名,则必须有
\@
Provide的变量和其有相同的别名才可以匹配成功;否则,则需要变量名相同才能匹配成功。 |
| 同步类型 | 双向:从
\@
Provide变量(具体请参见
\@
Provide)到所有
\@
Consume变量,以及相反的方向。双向同步操作与
\@
State和
\@
Link的组合相同。 |
| 同步类型 | 双向:从
\@
Provide变量(具体请参见
\@
Provide)到所有
\@
Consume变量,以及相反的方向。双向同步操作与
\@
State和
\@
Link的组合相同。 |
| 允许装饰的变量类型 | Object、class、string、number、boolean、enum类型,以及这些类型的数组。
嵌套
类型的场景请参考
[
观察变化
](
#观察变化
)
。
<br/>
不支持any,不允许使用undefined和null。
<br/>
必须指定类型。
\@
Provide变量的
\@
Consume变量的类型必须相同。
<br/>
**说明:**
<br/>
\@
Consume装饰的变量,在其父节点或者祖先节点上,必须有对应的属性和别名的
\@
Provide装饰的变量。 |
| 允许装饰的变量类型 | Object、class、string、number、boolean、enum类型,以及这些类型的数组。
<br/>
支持Date类型。
<br/>
支持
类型的场景请参考
[
观察变化
](
#观察变化
)
。
<br/>
不支持any,不允许使用undefined和null。
<br/>
必须指定类型。
\@
Provide变量的
\@
Consume变量的类型必须相同。
<br/>
**说明:**
<br/>
\@
Consume装饰的变量,在其父节点或者祖先节点上,必须有对应的属性和别名的
\@
Provide装饰的变量。 |
| 被装饰变量的初始值 | 无,禁止本地初始化。 |
| 被装饰变量的初始值 | 无,禁止本地初始化。 |
...
@@ -99,6 +99,62 @@
...
@@ -99,6 +99,62 @@
-
当装饰的对象是array的时候,可以观察到数组的添加、删除、更新数组单元。
-
当装饰的对象是array的时候,可以观察到数组的添加、删除、更新数组单元。
-
当装饰的对象是Date时,可以观察到Date整体的赋值,同时可通过调用Date的接口
`setFullYear`
,
`setMonth`
,
`setDate`
,
`setHours`
,
`setMinutes`
,
`setSeconds`
,
`setMilliseconds`
,
`setTime`
,
`setUTCFullYear`
,
`setUTCMonth`
,
`setUTCDate`
,
`setUTCHours`
,
`setUTCMinutes`
,
`setUTCSeconds`
,
`setUTCMilliseconds`
更新Date的属性。
```
ts
@
Component
struct
CompD
{
@
Consume
selectedDate
:
Date
;
build
()
{
Column
()
{
Button
(
`child increase the day by 1`
)
.
onClick
(()
=>
{
this
.
selectedDate
.
setDate
(
this
.
selectedDate
.
getDate
()
+
1
)
})
Button
(
'
child update the new date
'
)
.
margin
(
10
)
.
onClick
(()
=>
{
this
.
selectedDate
=
new
Date
(
'
2023-09-09
'
)
})
DatePicker
({
start
:
new
Date
(
'
1970-1-1
'
),
end
:
new
Date
(
'
2100-1-1
'
),
selected
:
this
.
selectedDate
})
}
}
}
@
Entry
@
Component
struct
CompA
{
@
Provide
selectedDate
:
Date
=
new
Date
(
'
2021-08-08
'
)
build
()
{
Column
()
{
Button
(
'
parent increase the day by 1
'
)
.
margin
(
10
)
.
onClick
(()
=>
{
this
.
selectedDate
.
setDate
(
this
.
selectedDate
.
getDate
()
+
1
)
})
Button
(
'
parent update the new date
'
)
.
margin
(
10
)
.
onClick
(()
=>
{
this
.
selectedDate
=
new
Date
(
'
2023-07-07
'
)
})
DatePicker
({
start
:
new
Date
(
'
1970-1-1
'
),
end
:
new
Date
(
'
2100-1-1
'
),
selected
:
this
.
selectedDate
})
CompD
()
}
}
}
```
### 框架行为
### 框架行为
...
...
zh-cn/application-dev/quick-start/arkts-state.md
浏览文件 @
d6ccb467
...
@@ -29,8 +29,7 @@
...
@@ -29,8 +29,7 @@
| ------------ | ---------------------------------------- |
| ------------ | ---------------------------------------- |
| 装饰器参数 | 无 |
| 装饰器参数 | 无 |
| 同步类型 | 不与父组件中任何类型的变量同步。 |
| 同步类型 | 不与父组件中任何类型的变量同步。 |
| 允许装饰的变量类型 | Object、class、string、number、boolean、enum类型,以及这些类型的数组。嵌套类型的场景请参考
[
观察变化
](
#观察变化
)
。
<br/>
类型必须被指定。
<br/>
不支持any,不支持简单类型和复杂类型的联合类型,不允许使用undefined和null。
<br/>
**说明:**
<br/>
建议不要装饰Date类型,应用可能会产生异常行为。
<br/>
不支持Length、ResourceStr、ResourceColor类型,Length、ResourceStr、ResourceColor为简单类型和复杂类型的联合类型。 |
| 允许装饰的变量类型 | Object、class、string、number、boolean、enum类型,以及这些类型的数组。
<br/>
支持Date类型。
<br/>
支持类型的场景请参考
[
观察变化
](
#观察变化
)
。
<br/>
类型必须被指定。
<br/>
不支持any,不支持简单类型和复杂类型的联合类型,不允许使用undefined和null。
<br/>
**说明:**
<br/>
不支持Length、ResourceStr、ResourceColor类型,Length、ResourceStr、ResourceColor为简单类型和复杂类型的联合类型。 |
| 被装饰变量的初始值 | 必须指定。 |
## 变量的传递/访问规则说明
## 变量的传递/访问规则说明
...
@@ -153,6 +152,45 @@
...
@@ -153,6 +152,45 @@
this
.
title
.
push
(
new
Model
(
12
))
this
.
title
.
push
(
new
Model
(
12
))
```
```
-
当装饰的对象是Date时,可以观察到Date整体的赋值,同时可通过调用Date的接口
`setFullYear`
,
`setMonth`
,
`setDate`
,
`setHours`
,
`setMinutes`
,
`setSeconds`
,
`setMilliseconds`
,
`setTime`
,
`setUTCFullYear`
,
`setUTCMonth`
,
`setUTCDate`
,
`setUTCHours`
,
`setUTCMinutes`
,
`setUTCSeconds`
,
`setUTCMilliseconds`
更新Date的属性。
```
ts
@
Entry
@
Component
struct
DatePickerExample
{
@
State
selectedDate
:
Date
=
new
Date
(
'
2021-08-08
'
)
build
()
{
Column
()
{
Button
(
'
set selectedDate to 2023-07-08
'
)
.
margin
(
10
)
.
onClick
(()
=>
{
this
.
selectedDate
=
new
Date
(
'
2023-07-08
'
)
})
Button
(
'
increase the year by 1
'
)
.
margin
(
10
)
.
onClick
(()
=>
{
this
.
selectedDate
.
setFullYear
(
this
.
selectedDate
.
getFullYear
()
+
1
)
})
Button
(
'
increase the month by 1
'
)
.
margin
(
10
)
.
onClick
(()
=>
{
this
.
selectedDate
.
setMonth
(
this
.
selectedDate
.
getMonth
()
+
1
)
})
Button
(
'
increase the day by 1
'
)
.
margin
(
10
)
.
onClick
(()
=>
{
this
.
selectedDate
.
setDate
(
this
.
selectedDate
.
getDate
()
+
1
)
})
DatePicker
({
start
:
new
Date
(
'
1970-1-1
'
),
end
:
new
Date
(
'
2100-1-1
'
),
selected
:
this
.
selectedDate
})
}.
width
(
'
100%
'
)
}
}
```
### 框架行为
### 框架行为
...
...
zh-cn/application-dev/reference/arkui-ts/ts-universal-attributes-grid.md
浏览文件 @
d6ccb467
...
@@ -6,6 +6,7 @@
...
@@ -6,6 +6,7 @@
>
>
> - 栅格布局的列宽、列间距由距离最近的GridContainer父组件决定。使用栅格属性的组件树上至少需要有1个GridContainer容器组件。
> - 栅格布局的列宽、列间距由距离最近的GridContainer父组件决定。使用栅格属性的组件树上至少需要有1个GridContainer容器组件。
> - gridSpan、gridOffset属性调用时其父组件或祖先组件必须是GridContainer。
## 属性
## 属性
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录