当前位置: 首页 > news >正文

上海本土互联网公司专业的seo搜索引擎优化培训

上海本土互联网公司,专业的seo搜索引擎优化培训,wordpress删除登录,重庆市门户网站制作前言: 前面我们认识了Builder装饰器:自定义构建函数,今天我们继续认识下一个装饰器——BuilderParam装饰器。 当开发者创建了自定义组件,并想对该组件添加特定功能时,例如在自定义组件中添加一个点击跳转操作。若直接…

前言:

前面我们认识了@Builder装饰器:自定义构建函数,今天我们继续认识下一个装饰器——@BuilderParam装饰器。

当开发者创建了自定义组件,并想对该组件添加特定功能时,例如在自定义组件中添加一个点击跳转操作。若直接在组件内嵌入事件方法,将会导致所有引入该自定义组件的地方均增加了该功能。为解决此问题,ArkUI引入了@BuilderParam装饰器,@BuilderParam用来装饰指向@Builder方法的变量,开发者可在初始化自定义组件时对此属性进行赋值,为自定义组件增加特定的功能。该装饰器用于声明任意UI描述的一个元素,类似slot占位符。

注意⚠️:从API version 9开始,该装饰器支持在ArkTS卡片中使用。

@BuilderParam装饰器的使用说明

@BuildParam装饰的方法只能被自定义构建函数(@Builder装饰的方法)初始化。

  • 使用所属自定义组件的自定义构建函数或者全局的自定义构建函数,在本地初始化@BuilderParam。
@Builder function GlobalBuilder0() {}@Component
struct Child {@Builder doNothingBuilder() {};@BuilderParam aBuilder0: () => void = this.doNothingBuilder;@BuilderParam aBuilder1: () => void = GlobalBuilder0;build(){}
}
  • 用父组件自定义构建函数初始化子组件@BuildParam装饰的方法。
@Component
struct Child {@BuilderParam aBuilder0: () => void;build() {Column() {this.aBuilder0()}}
}@Entry
@Component
struct Parent {@Builder componentBuilder() {Text(`Parent builder `)}build() {Column() {Child({ aBuilder0: this.componentBuilder })}}
}
  • 需注意this指向正确。
    以下示例中,Parent组件在调用this.componentBuilder()时,this.label指向其所属组件,即“Parent”。@Builder componentBuilder()传给子组件@BuilderParam aBuilder0,在Child组件中调用this.aBuilder0()时,this.label指向在Child的label,即“Child”。
@Component
struct Child {label: string = `Child`@BuilderParam aBuilder0: () => void;build() {Column() {this.aBuilder0()}}
}@Entry
@Component
struct Parent {label: string = `Parent`@Builder componentBuilder() {Text(`${this.label}`)}build() {Column() {this.componentBuilder()Child({ aBuilder0: this.componentBuilder })}}
}

注意⚠️:开发者谨慎使用bind改变函数调用的上下文,可能会使this指向混乱。

@BuilderParam装饰器的使用场景

1:参数初始化组件

@BuilderParam装饰的方法可以是有参数和无参数的两种形式,需与指向的@Builder方法类型匹配。@BuilderParam装饰的方法类型需要和@Builder方法类型一致。

举个列子:

@Builder function GlobalBuilder1($$ : {label: string }) {Text($$.label).width(400).height(50).backgroundColor(Color.Blue)
}@Component
struct Child {label: string = 'Child'// 无参数类,指向的componentBuilder也是无参数类型@BuilderParam aBuilder0: () => void;// 有参数类型,指向的GlobalBuilder1也是有参数类型的方法@BuilderParam aBuilder1: ($$ : { label : string}) => void;build() {Column() {this.aBuilder0()this.aBuilder1({label: 'global Builder label' } )}}
}@Entry
@Component
struct Parent {label: string = 'Parent'@Builder componentBuilder() {Text(`${this.label}`)}build() {Column() {this.componentBuilder()Child({ aBuilder0: this.componentBuilder, aBuilder1: GlobalBuilder1 })}}
}

2:参数初始化组件

在自定义组件中使用@BuilderParam装饰的属性时也可通过尾随闭包进行初始化。在初始化自定义组件时,组件后紧跟一个大括号“{}”形成尾随闭包场景。

开发者可以将尾随闭包内的内容看做@Builder装饰的函数传给@BuilderParam。举个例子:

// xxx.ets
@Component
struct CustomContainer {@Prop header: string;@BuilderParam closer: () => voidbuild() {Column() {Text(this.header).fontSize(30)this.closer()}}
}@Builder function specificParam(label1: string, label2: string) {Column() {Text(label1).fontSize(30)Text(label2).fontSize(30)}
}@Entry
@Component
struct CustomContainerUser {@State text: string = 'header';build() {Column() {// 创建CustomContainer,在创建CustomContainer时,通过其后紧跟一个大括号“{}”形成尾随闭包// 作为传递给子组件CustomContainer @BuilderParam closer: () => void的参数CustomContainer({ header: this.text }) {Column() {specificParam('testA', 'testB')}.backgroundColor(Color.Yellow).onClick(() => {this.text = 'changeHeader';})}}}
}

注意⚠️:此场景下自定义组件内有且仅有一个使用@BuilderParam装饰的属性。

总结:

  1. @BuilderParam用来装饰指向@Builder方法的变量,开发者可在初始化自定义组件时对此属性进行赋值,为自定义组件增加特定的功能。该装饰器用于声明任意UI描述的一个元素,类似slot占位符。
  2. @BuildParam装饰的方法只能被自定义构建函数(@Builder装饰的方法)初始化。
  3. 在参数初始化组件时,@BuilderParam装饰的方法可以是有参数和无参数的两种形式,需与指向的@Builder方法类型匹配。@BuilderParam装饰的方法类型需要和@Builder方法类型一致。
  4. 在尾随闭包初始化组件时,组件后紧跟一个大括号“{}”形成尾随闭包场景。开发者可以将尾随闭包内的内容看做@Builder装饰的函数传给@BuilderParam。但是注意,此场景下自定义组件内有且仅有一个使用@BuilderParam装饰的属性。
http://www.yayakq.cn/news/361637/

相关文章:

  • 搭建简单网站前端开发的公司有哪些
  • 做刀网站迁安做网站中的cms开发
  • 偃师做网站wordpress 增量备份
  • 深圳网深圳网站开发公司商业网站的网址
  • 网站功能需求列表展台设计展会展位设计
  • 网页游戏网址推荐搜狗搜索引擎优化
  • 建微信网站木材 技术支持 东莞网站建设
  • 网站建设网页制作网站建设怎么做账务处理
  • 网站建设服务的具体条件自己做网站内容读取太慢
  • 网站规划怎么写宣传册样式
  • 如何用html做班级网站做网站一定要用服务器吗
  • 12306网站哪个公司做的搜索引擎排名机制
  • 民宿设计网站大全八戒网设计官网
  • 一站式营销推广平台随州什么公司做网站
  • django 做网站的代码建设部网站注册
  • 个人房产信息查询网站wordpress 页面满屏
  • 阳江企业网站建设佛山哪家网站建设比较好
  • 品牌型 网站建设怎么做网站的主页面
  • wordpress做cms网站做视频哪个网站素材好
  • dw做网站站点dw公司网页制作
  • 公司网站招聘板块怎么做马鞍山网站建设设计
  • 个人网站建设的目的酒店网络营销策略论文
  • 广州网站排名优化服务药品彩页设计
  • 南昌购物网站开发情留 蚊子 pj wordpress
  • 郑州企业建设网站有什么好处百度推广电话营销话术
  • 襄阳seo站内优化网站模版切换
  • 制作app免费网站模板下载建筑工程外架安全网
  • 怎样加入好大夫网站做医生自己建网站写小说
  • 广州站电话wordpress添加文章页不显示图片
  • 网站设计要注意事项网络营销的目的和意义