@BuilderParam 装饰器
介绍
注意
这个装饰器至关重要可以说
@Builder
就靠它来撑场子了只有用了这个装饰器才能在组件里面传递 HTML
@BuilderParam
装饰器只能放用@Builder
修饰的组件
全局
默认
- 父组件调用
ts
import Header from '../views/Header'
@Entry
@Component
struct Index3 {
build() {
Column() {
Header()
}
}
}
- 子组件
注意
第一步 设定卡槽名称
第二步 设定默认内容
ts
@Preview
@Component
export default struct Header {
// 接受到的html
// 1 设定卡槽
@BuilderParam
solt: () => void = this.slotContent;
// 2. 设定默认内容
@Builder
slotContent() {
Text("哈哈哈").fontSize(48).fontColor(Color.Red)
};
build() {
Column() {
Text("这里面的就是头部自己的内容").fontSize(26)
Divider()
Text("下面是卡槽内容").fontSize(26)
this.solt()
Divider()
Text("卡槽内容结束").fontSize(26)
}
}
}
传值
- 父组件调用
ts
import Header from '../views/Header'
@Builder
function showNoParams() {
Column() {
Text("这就是父组件传递过来的html").fontSize(24).fontColor(Color.Red)
}
}
@Entry
@Component
struct Index3 {
build() {
Column() {
Header({ solt: showNoParams })
}
}
}
- 子组件使用
ts
@Preview
@Component
export default struct Header {
// 接受到的html
// 1 设定卡槽
@BuilderParam
solt: () => void = this.slotContent;
// 2. 设定默认内容
@Builder
slotContent() {
Text("哈哈哈").fontSize(48).fontColor(Color.Red)
};
build() {
Column() {
Text("这里面的就是头部自己的内容").fontSize(26)
Divider()
Text("下面是卡槽内容").fontSize(26)
this.solt()
Divider()
Text("卡槽内容结束").fontSize(26)
}
}
}
注意
父组件调用子组件的时候,子组件的参数必须用对象的形式传递
子组件的参数必须用
@BuilderParam
装饰器修饰的名称必须和父组件
传递过来的一致
局部
默认
- 父组件调用
ts
import Header from '../views/Header'
@Entry
@Component
struct Index3 {
build() {
Column() {
Header()
}
}
}
- 子组件
注意
第一步 设定卡槽名称
第二步 设定默认内容
ts
@Preview
@Component
export default struct Header {
// 接受到的html
// 1 设定卡槽
@BuilderParam
solt: () => void = this.slotContent;
// 2. 设定默认内容
@Builder
slotContent() {
Text("哈哈哈").fontSize(48).fontColor(Color.Red)
};
build() {
Column() {
Text("这里面的就是头部自己的内容").fontSize(26)
Divider()
Text("下面是卡槽内容").fontSize(26)
this.solt()
Divider()
Text("卡槽内容结束").fontSize(26)
}
}
}
传值
- 父元素调用
ts
import Header from '../views/Header'
@Entry
@Component
struct Index3 {
@Builder
slotOne() {
Column() {
Text("父元素给子元素传递的内容232").fontSize(24).fontColor(Color.Red)
}
}
build() {
Column() {
Header({ slot: this.slotOne })
}
}
}
- 子组件使用
ts
@Preview
@Component
export default struct Header {
// 接受到的html
// 1 设定卡槽
@BuilderParam
slot: () => void = this.slotContent;
// 2. 设定默认内容
@Builder
slotContent() {
Text("哈哈哈").fontSize(48).fontColor(Color.Red)
};
build() {
Column() {
Text("这里面的就是头部自己的内容").fontSize(26)
Divider()
Text("下面是卡槽内容").fontSize(26)
this.slot()
Divider()
Text("卡槽内容结束").fontSize(26)
}
}
}