Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Docs
提交
6a4fe9e5
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看板
未验证
提交
6a4fe9e5
编写于
5月 05, 2022
作者:
O
openharmony_ci
提交者:
Gitee
5月 05, 2022
浏览文件
操作
浏览文件
下载
差异文件
!3589 add builder doc
Merge pull request !3589 from 蒲亚军/pyjbuilder
上级
86b3370f
d1749e09
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
15 addition
and
6 deletion
+15
-6
zh-cn/application-dev/ui/ts-component-based-builder.md
zh-cn/application-dev/ui/ts-component-based-builder.md
+15
-6
未找到文件。
zh-cn/application-dev/ui/ts-component-based-builder.md
浏览文件 @
6a4fe9e5
...
@@ -49,18 +49,21 @@ struct CompA {
...
@@ -49,18 +49,21 @@ struct CompA {
当开发者创建自定义组件,想对该组件添加特定功能时(如:仅对自定义组件添加一个点击跳转操作)。若直接在组件内嵌入事件方法,将会导致所有初始化该组件的地方均增加了该功能。为解决此问题,引入了@BuilderParam装饰器,此装饰器修饰的属性值可为@Builder修饰的方法,开发者可在初始化自定义组件时对此属性进行赋值,为自定义组件增加特定的的功能。
当开发者创建自定义组件,想对该组件添加特定功能时(如:仅对自定义组件添加一个点击跳转操作)。若直接在组件内嵌入事件方法,将会导致所有初始化该组件的地方均增加了该功能。为解决此问题,引入了@BuilderParam装饰器,此装饰器修饰的属性值可为@Builder修饰的方法,开发者可在初始化自定义组件时对此属性进行赋值,为自定义组件增加特定的的功能。
### 参数初始化组件
### 参数初始化组件
通过参数初始化组件时,将@Builder装饰的方法赋值给@BuilderParam修饰的属性,并在自定义组件内调用content属性值。
通过参数初始化组件时,将@Builder装饰的方法赋值给@BuilderParam修饰的属性,并在自定义组件内调用content属性值。对@BuilderParam修饰的属性进行赋值时不带参数(如:
`content: this.specificParam`
),则此属性的类型需定义成无返回值的函数(如:
`@BuilderParam content: () => void`
)。若带参数(如:
`callContent: this.specificParam1("111")`
),则此属性的类型需定义成any(如:
`@BuilderParam callContent: any;`
)。
```
```
@Component
@Component
struct CustomContainer {
struct CustomContainer {
header: string = "";
header: string = "";
@BuilderParam content: () => any;
@BuilderParam noParam: () => void;
@BuilderParam withParam: any;
footer: string = "";
footer: string = "";
build() {
build() {
Column() {
Column() {
Text(this.header)
Text(this.header)
.fontSize(50)
.fontSize(50)
this.content()
this.noParam()
this.withParam()
Text(this.footer)
Text(this.footer)
.fontSize(50)
.fontSize(50)
}
}
...
@@ -70,7 +73,12 @@ struct CustomContainer {
...
@@ -70,7 +73,12 @@ struct CustomContainer {
@Entry
@Entry
@Component
@Component
struct CustomContainerUser {
struct CustomContainerUser {
@Builder specificParam(label: string) {
@Builder specificNoParam() {
Column() {
Text("noParam").fontSize(50)
}
}
@Builder SpecificWithParam(label: string) {
Column() {
Column() {
Text(label).fontSize(50)
Text(label).fontSize(50)
}
}
...
@@ -80,7 +88,8 @@ struct CustomContainerUser {
...
@@ -80,7 +88,8 @@ struct CustomContainerUser {
Column() {
Column() {
CustomContainer({
CustomContainer({
header: "Header",
header: "Header",
content: this.specificParam("111")
noParam: this.specificNoParam,
withParam: this.SpecificWithParam("WithParam"),
footer: "Footer",
footer: "Footer",
})
})
}
}
...
@@ -95,7 +104,7 @@ struct CustomContainerUser {
...
@@ -95,7 +104,7 @@ struct CustomContainerUser {
@Component
@Component
struct CustomContainer {
struct CustomContainer {
header: string = "";
header: string = "";
@BuilderParam closer: () =>
any
;
@BuilderParam closer: () =>
void
;
build() {
build() {
Column() {
Column() {
Text(this.header)
Text(this.header)
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录