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

社区网站源码关键词挖掘啊爱站网

社区网站源码,关键词挖掘啊爱站网,上海市建设安全协会网站特种工,可以用wordpress的云前言 本文基于Api13 很多的场景下,父组件需要触发子组件中的某个方法,来实现一些特定的逻辑,但是ArkUI是声明式UI,不能直接调用子组件中的方法,那么怎么去实现这个功能呢? 举一个很常见的案例,通…

前言

本文基于Api13

很多的场景下,父组件需要触发子组件中的某个方法,来实现一些特定的逻辑,但是ArkUI是声明式UI,不能直接调用子组件中的方法,那么怎么去实现这个功能呢?

举一个很常见的案例,通过调用子组件中的某个方法,实现子组件UI的更新,简单的代码如下,只有通过调用changeUI方法,才会触发UI的更新。

@Component
struct Child {@State message: string = "我是子组件"/***AUTHOR:AbnerMing*INTRODUCE:子组件方法*/changeUI() {this.message = "子组件UI更新了"}build() {Text(this.message).width("100%").height(50).backgroundColor(Color.Pink).textAlign(TextAlign.Center)}
}

方式一:@Watch装饰器

如果你是用的V1版本装饰器,我们可以使用@Watch装饰器很轻松进行实现。

子组件定义@Watch装饰器

@Component
struct Child {@State message: string = "我是子组件"@Prop @Watch("changeUI") isChangeStatus: boolean = false/***AUTHOR:AbnerMing*INTRODUCE:子组件方法*/changeUI() {this.message = "子组件UI更新了"}build() {Text(this.message).width("100%").height(50).backgroundColor(Color.Pink).textAlign(TextAlign.Center)}
}

父组件调用

可通过子组件定义的isChangeStatus属性,不断的变化其值就可以了。

@Entry@Componentstruct DemoPage {@State isChangeStatus: boolean = falsebuild() {Column() {Child({ isChangeStatus: this.isChangeStatus })Button("点击").onClick(() => {this.isChangeStatus = !this.isChangeStatus})}.height('100%').width('100%').justifyContent(FlexAlign.Center)}}

方式二:@Monitor装饰器

和方式一的实现方式是一致的,只不过,@Monitor装饰器是V2版本,也就是说,你使用的是V2版本装饰器的话,可以使用这个。

子组件定义@Monitor装饰器

@ComponentV2
struct Child {@Local message: string = "我是子组件"@Param isChangeStatus: boolean = false/***AUTHOR:AbnerMing*INTRODUCE:子组件方法*/@Monitor("isChangeStatus")changeUI() {this.message = "子组件UI更新了"}build() {Text(this.message).width("100%").height(50).backgroundColor(Color.Pink).textAlign(TextAlign.Center)}
}

父组件调用

@Entry
@ComponentV2
struct DemoPage {@Local isChangeStatus: boolean = falsebuild() {Column() {Child({ isChangeStatus: this.isChangeStatus })Button("点击").onClick(() => {this.isChangeStatus = !this.isChangeStatus})}.height('100%').width('100%').justifyContent(FlexAlign.Center)}
}

方式三:接口回调

定义回调函数

class ChangeController {change = () => {}
}

子组件实现回调

@Component
struct Child {@State message: string = "我是子组件"changeController: ChangeController = new ChangeController()aboutToAppear(): void {if (this.changeController.change != undefined) {this.changeController.change = () => {this.changeUI()}}}/***AUTHOR:AbnerMing*INTRODUCE:子组件方法*/changeUI() {this.message = "子组件UI更新了"}build() {Text(this.message).width("100%").height(50).backgroundColor(Color.Pink).textAlign(TextAlign.Center)}
}

父组件调用函数

@Entry
@Component
struct DemoPage {changeController: ChangeController = new ChangeController()build() {Column() {Child({ changeController: this.changeController })Button("点击").onClick(() => {this.changeController.change()})}.height('100%').width('100%').justifyContent(FlexAlign.Center)}
}

方式四:事件订阅EventHub

订阅事件

@Component
struct Child {@State message: string = "我是子组件"aboutToAppear(): void {getContext().eventHub.on("changeUI", ()=>{this.changeUI()})}/***AUTHOR:AbnerMing*INTRODUCE:子组件方法*/changeUI() {this.message = "子组件UI更新了"}build() {Text(this.message).width("100%").height(50).backgroundColor(Color.Pink).textAlign(TextAlign.Center)}
}

触发事件

@Entry
@Component
struct DemoPage {build() {Column() {Child()Button("点击").onClick(() => {getContext().eventHub.emit('changeUI')})}.height('100%').width('100%').justifyContent(FlexAlign.Center)}
}

相关总结

也许大家可能会有疑问,子组件更新UI,直接由装饰器触发不就行了,希望大家能够明白,以上呢只是简单的案例,在实际的开发中,子组件方法中可能很多的逻辑,比如网络请求,比如数据存储等等,并不是简单的UI更新。

当然了,所举的实现方式也不是全的,可能也有着其它的方式可以实现,大家在实际的开发中选择适合的一种即可。

http://www.dtcms.com/wzjs/88284.html

相关文章:

  • 成都网站搜索优化免费友情链接平台
  • 百度入驻seo搜索引擎优化技术教程
  • 潍坊营销型网站建设东莞网站建设工作
  • 福州建设网站公司上海网站制作公司
  • 网站建立与推广营销策划方案怎么写
  • 网页设计网站建设招聘爱站网ip反查域名
  • 网站建设流程ppt百度搜索下载app
  • 网站头像有啥做会清晰南通seo网站优化软件
  • 网站开发工程师6十大暗网搜索引擎
  • 做实验流程图的网站广州百度推广客服电话
  • 公司网站是否做地方分站英文外链seo兼职
  • 天津微外卖网站建设短视频拍摄剪辑培训班
  • 公司产品展示网站源码优化营商环境的措施建议
  • 南宁网站搭建云南最新消息
  • 网站设计项目策划ppt营销推广渠道有哪些
  • 百度入口官网app优化方案
  • 职业学校网站建设方案排名
  • it网上做笔记的网站网络优化app
  • 网站上推广游戏怎么做网页设计与制作教程
  • 新公司董事长致辞做网站lpl赛区战绩
  • 网站开发环境的意义seo排名点击器
  • 方便做简笔画的网站或软件搜索引擎优化实训心得
  • 制作web网站开发百度关键词查询网站
  • python做简单的网站设计网站接单
  • 万网网站建设步骤厦门网站建设
  • 可以做引流网站的源码上海外贸seo
  • 实验中心网站建设无代码免费web开发平台
  • 腾讯合作网站建设有哪些公司百度文库首页
  • 商圈外卖网站怎么做电子技术培训机构
  • 南宁百度做网站多少钱推介网