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

莱州市住房和规划建设管理局网站招聘网络营销推广人员

莱州市住房和规划建设管理局网站,招聘网络营销推广人员,绵阳学校网站建设,昌平沙河网站建设Monitor作用 Monitor的作用就是来监听状态变量的值变化的。被Monitor修饰的函数,会在其对应监听的变量发生值的变化时,回调此函数,从而可以让您知道是什么值发生变化了,变化前是什么值,变化后是什么值。 V1版本的装饰器,有个叫@Watch的装饰器,其实也有监听变化的能力,…

Monitor作用

Monitor的作用就是来监听状态变量的值变化的。被Monitor修饰的函数,会在其对应监听的变量发生值的变化时,回调此函数,从而可以让您知道是什么值发生变化了,变化前是什么值,变化后是什么值。

V1版本的装饰器,有个叫@Watch的装饰器,其实也有监听变化的能力,但是其重要局限就是,不能知道是什么参数发生了变化,也不知道参数变化之前是什么值。在代码中大致反应如下:

class Info{name: string = 'Tom'age: number = 25
}@Entry
@Component
struct MonitorTest {@State @Watch('onInfoChange') info: Info = new Info()@State @Watch('onNumberArrayChange') numArr: number[] = [1, 2, 3, 4, 5]//这个函数没有参数.所以值变成了什么您可以通过查看当前值来获取,但是之前是怎么样就不知道了.//而且到底是info name改变引发的, 还是info age改变引发的也没办法知道.onInfoChange(){hilog.info(LOG_DOMAIN, LOG_TAG, `info after change info.name=${this.info.name}, info.age=${this.info.age}`)}onNumberArrayChange(){hilog.info(LOG_DOMAIN, LOG_TAG, `numArr after change! numArr=${JSON.stringify(this.numArr)}}`)}build() {Row() {Column() {Button("change info name").onClick(() => {this.info.name = "Jack";})Button("change info age").onClick(() => {this.info.age = 30;})Button("change numArr[2]").onClick(() => {this.numArr[2] = 5;})Button("change numArr[3]").onClick(() => {this.numArr[3] = 6;})}.width('100%')}.height('100%')}
}

watch有多不好用,那么在设计V2版本时,是一定要改掉那些缺陷的。Monitor就是对一个Watch的修正。而且它具备以下能力

  • 同时监听很多属性的变化,并且当这些属性如果在同一个逻辑场景下,同时改变值的时候,那么就会回调一次相关的监听方法。类似于把变化当成事务打包处理。
  • 如果被监听的对象是一个类,或者复杂的内嵌类型,且这个对象被@ObservedV2和@Trace修饰,也就是对象已经具备被深度观测的能力了,那么Monitor是可以做到深度监听对象的能力的。

Monitor简单用法

这个Monitor的使用方式有一点点复杂,我们先看一个案例,体会一下,之后再扩开了解吧。

@Entry
@ComponentV2
struct MonitorTest{@Local name:string = '王小二'@Local age:number = 18@Monitor('name', 'age') //修饰函数,代表对什么变量感兴趣.此处容易出bug.就是改变量名一个不小心少改这块就会出问题.onStrChange(monitor: IMonitor) { //此函数的协议是要带一个IMonitor参数.hilog.info(LOG_DOMAIN, LOG_TAG, "回调onStrChange")monitor.dirty.forEach((path: string)=>{hilog.info(LOG_DOMAIN, LOG_TAG, "回调onStrChange, 循环当前Path=" + path)hilog.info(LOG_DOMAIN, LOG_TAG, `${path} change from ${monitor.value(path)?.before} to ${monitor.value(path)?.now}`)})}build() {Column(){Button('change string').onClick(()=>{this.name = '王小三'hilog.info(LOG_DOMAIN, LOG_TAG, "改完name")this.age = 15hilog.info(LOG_DOMAIN, LOG_TAG, "改完age")   //此逻辑执行完成之后,打包完成后再进行同步数据的.具有一定的事务的特征})}}
}

打印日志:

Monitor使用协议介绍

根据上方的代码


文章转载自:

http://D7EfwqUz.pbksb.cn
http://EkXqX3mA.pbksb.cn
http://UqXdT4fR.pbksb.cn
http://qprP4kTJ.pbksb.cn
http://9XCFFZqJ.pbksb.cn
http://FZ5tsGWt.pbksb.cn
http://jenH2lYQ.pbksb.cn
http://hd4Xwql2.pbksb.cn
http://m7xkXYqd.pbksb.cn
http://JysZlHN2.pbksb.cn
http://RkLqIe7J.pbksb.cn
http://LRscs08f.pbksb.cn
http://oN2VXaRo.pbksb.cn
http://xnYlyhyb.pbksb.cn
http://0zdrilFv.pbksb.cn
http://6Qyor8rG.pbksb.cn
http://q7T6lP3M.pbksb.cn
http://6SRgfM81.pbksb.cn
http://LEdPexCr.pbksb.cn
http://N4uLvVAe.pbksb.cn
http://Vpi1K8UJ.pbksb.cn
http://Ni28oGKz.pbksb.cn
http://T8srYSjP.pbksb.cn
http://8lBZ4UeP.pbksb.cn
http://0jjGLwx4.pbksb.cn
http://jLCYwUp8.pbksb.cn
http://aeUniT3L.pbksb.cn
http://F1lgPvof.pbksb.cn
http://FFmqoAYQ.pbksb.cn
http://YqkmwBCp.pbksb.cn
http://www.dtcms.com/wzjs/730618.html

相关文章:

  • 网站空间 更换苏州网络公司代理商
  • 百度建一个网站多少钱乐清公共
  • 个人网站毕业设计论文公共服务标准化指南
  • 丹徒网站建设哪家好做书评的网站有哪些
  • 商业网站模板下载个人网站内容有哪些内容
  • 个性化推荐网站开发源码旅游小镇网站建设方案
  • 北京公司网站制作费用网站后台登陆验证码无法显示
  • 合肥专业做网站的公司有哪些网站用开源cms
  • 聊城手机网站建设费用网站建设需要什么插件
  • 官方重大项目建设库网站重庆高端网站建设
  • php企业网站开发方案手机制作视频的软件app免费
  • 有没有可以做物理实验的网站代驾app软件开发公司
  • 如何做视频网站网页版word编辑器
  • 百度站长统计网站查询地址
  • wordpress新建站点代做seo关键词排名
  • 宜城市城乡建设局网站wordpress 移动页面 自动跳转
  • 做海报图片的网站项目网源码
  • 分析网站优缺点百度关键词查询
  • 网站建设面临的困难临沂网站设计制作
  • 手机网站做适配网站续费能自己续费吗
  • 宁波网站制作流程网站登记备案查询
  • 百度网站收录查询凡科的网站怎么仿
  • 农产品信息网站建设方案网站水印设置作教程
  • cn网站建设多少钱紫色网站模板
  • 佛山做网站多少钱搜索引擎营销的作用
  • 建个私人网站怎么做东直门小学的网站建设
  • 做衣服外单网站池州市建设工程造价管理网站
  • 扬州网站制作免费开发个人网站
  • 怎么下载网站备案号网络规划毕业设计
  • seo1网站查询php旅游网站开发小结