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

诏安县建设局网站指数基金怎么买

诏安县建设局网站,指数基金怎么买,在线制作插画网站,phpmysql网站开发笔记前言 本文基于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/801712.html

相关文章:

  • 优惠网站代理怎么做php 用什么做网站服务器吗
  • 提交网站到谷歌网站建设公司哪家比较好
  • 电子商务网站建设的需求网站建设制作方案
  • 合肥网站优化费用学室内设计就是失业
  • 华侨城网站开发邯郸网站建设制作
  • 网站关键词的布局教学网站设计与开发
  • 网站内页模板合肥制作网站
  • 承德网站建设公司公司手机版网站
  • 青岛 公司 网站建设价格wordpress 分类排行榜
  • 2o18江苏建设网站施工员模试卷新网站建设的工作总结
  • 网站建设的中期检查表做宠物的网站
  • 网站平台建设重点难点分析网站建设课设报告
  • 建设部网站中淼工程有限公司wordpress4.2 知更鸟
  • dede网站地图html文件95598网站服务建设
  • 怎么自做网站wordpress 动作hook
  • 有没有医学生做课件的网站店面建设网站的必要性
  • 计算机网络网站开发阿里巴巴的关联网站
  • 网站建设评估及分析广西高端网站建设
  • 手机网站制作公司 广州广告公司视频制作
  • 国内知名网站建设外部与wordpress发送
  • 信息网站建设的意义正规微商免费推广软件
  • 教人做衣服得网站有哪些怎么看自己的网站是用什么做的
  • 哈尔滨 网站开发赣州app开发
  • 镇江网站搜索引擎优化360关键词排名推广
  • 网上黑赌网站如何做代理长沙网站建设费用
  • 成都网站建设电话网站网站做代理
  • 网站开发主要内容和要求wordpress接入微信支付宝
  • 设计网站合集的网站怎样做网站赚钱
  • 哈尔滨模版建站公司推荐百度投诉中心在线申诉
  • 福州网站设计招聘软件开发文档包括什么内容