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

中国设计上海小红书seo

中国设计,上海小红书seo,网站开发案列,网站开发整套视频微信小程序全局事件订阅 在Vue开发中,我们可能用过eventBus来解决全局范围内的事件订阅及触发逻辑,在微信小程序的开发中我们可能也也会遇到同样的需求,那么我们尝试下在小程序(原生小程序开发)中实现类似eventBus的事…

微信小程序全局事件订阅

在Vue开发中,我们可能用过eventBus来解决全局范围内的事件订阅及触发逻辑,在微信小程序的开发中我们可能也也会遇到同样的需求,那么我们尝试下在小程序(原生小程序开发)中实现类似eventBus的事件订阅功能。

全局事件订阅

  1. 全局实例
    在Vue中我们有new Vue得到的全局对象,小程序中对应的则是app对象,在小程序组件或者页面中可以通过getApp()获取;
  2. 事件订阅
    声明对象存储事件,示例中使用map存储eventMap,向存储器中存放需要被触发的事件
    // 注意 开发阶段热跟新时,eventMap的声明和触发可能存在异步问题,需要阻断eventMap声明在触发之后的情况,这个问题仅限开发阶段存在
    on(action, event) {if (eventMap && !eventMap.has(action)) {eventMap.set(action, event)}
    }
    
  3. 事件触发
    当业务逻辑需要触发时,调用emit触发指定事件
    emit(action, arg) {if (eventMap && eventMap.has(action)) {eventMap.get(action) && eventMap.get(action)(arg)}
    }
    
  4. 事件卸载
    当订阅的事件过多或者确定事件不在被触发时,及时卸载事件可以减少内存压力
    off(action) {if (eventMap && eventMap.has(action)) {eventMap.delete(action)}
    }
    

整体代码如下(文件:app.js):

const eventMap = new Map()
App({globalData: {count: 1},// 事件订阅on(action, event) {if (eventMap && !eventMap.has(action)) {eventMap.set(action, event)}},// 事件卸载off(action) {if (eventMap && eventMap.has(action)) {eventMap.delete(action)}},// 事件触发emit(action, arg) {if (eventMap && eventMap.has(action)) {eventMap.get(action) && eventMap.get(action)(arg)}}
})
页面或者组件中使用
  1. 订阅on,订阅自定义事件countAdd(自定义事件名),并且传入事件被触发后需要被触发的逻辑,这里的changeCount就是在事件被触发是订阅触发的数据,当然触发事件的参数可以来自emit也可以无参数
const app = getApp()
Page({data: {count: app.globalData.count,},created() {// 注册事件app.on('countAdd', this.changeCount.bind(this))},changeCount(count) {this.setData({count})}
})
  1. 发布emit,发布自定义事件countAdd(自定义事件名)来触发所有监听该事件的订阅者(既注册了on的组件或者页面),emit携带的参数也会被传递给自定义事件
const app = getApp()
Component({data: {count: app.globalData.count,},// 触发事件bindEvent() {app.emit('countAdd', this.data.count++)}
})

这里changeCount是最终被触发的事件,countAdd是在订阅服务中自定义的事件名,之所以不使用相同的事件名,主要是区分下。

整体事件触发逻辑如下:

  1. 先订阅事件 changeCount
  2. 业务需要触发的时候触发bindEvent
  3. emit到全局来调用监听的事件
http://www.khdw.cn/news/13357.html

相关文章:

  • 全国思政网站的建设情况前端性能优化有哪些方法
  • 做网站和做商城的区别在哪里2023年东莞疫情最新消息
  • php源码怎么搭建网站免费网站电视剧全免费
  • 哈尔滨网站优化对策网站注册时间查询
  • asp网站会员管理模板网站关键词排名
  • vs做的网站案例网站流量统计分析工具
  • 深圳市专业做网站整合营销是什么
  • 响应式网站制作教程网络推广平台代理
  • 网站建设非功能需求黄页88网站推广方案
  • 蓝海电商平台宁波seo推广定制
  • 重庆网站营销免费自助建站哪个最好
  • sqlite做网站数据库沧州网站建设
  • 装修公司做推广网站怎么弄上海网站建设推广服务
  • 网页制作网站整合与测试it培训学校
  • 阿里买域名 电脑做网站2021百度模拟点击工具
  • 小孩做AV网站seo优化网站的手段
  • 网站需求建设书地推推广平台
  • 画质优化app下载seo优化博客
  • 深圳做网站比较好磁力搜索器下载
  • 天津专业智能建站怎样推广自己的网站
  • 网站营销最大的特点河北网站seo
  • 宁波网站建设ysdsh短视频seo搜索优化
  • 网站专业好找工作吗产品推广计划怎么写
  • 网站建设预期周期收录查询
  • 如何用frontpage2003做网站今日头条极速版官网
  • 郑州做网站九零后网络seo优化与推广招聘
  • 已满18点此自动转我赢网seo优化网站
  • 什么是网站策划书搜索引擎营销的作用
  • 讲述做网站的电影网络舆情处置的五个步骤
  • 深圳福田做网站公司百度商城官网首页