首页 > 其他分享 >uniapp使用EventBus实现页面间数据传递

uniapp使用EventBus实现页面间数据传递

时间:2024-05-31 19:54:32浏览次数:20  
标签:uniapp handleCustomEventBind customEvent uni EventBus 页面

前情

最近在做小程序项目,选用是当前比较火的uniapp技术栈,经常会遇到页面间消息传递的需求。

为什么要这么做?

uniapp页面间数据通信方式有很多:通过url传参,状态管理库vuex/pinia,本地存储,事件通道eventChannel,EventBus等,

这次的需求是在A面点击一个按钮跳转到B页面拾取一个数据选项再返回A页面用B页面拾取的数据做接下来逻辑处理,像这种情况用事件通道和EventBus来做是比较好的,EventBus相对使用更简单一些,所以使用EventBus

实现代码

A页面

<template>
  <view>
    <text>我是A页面</text>
	  <button @click="gotoPageB">点我去B页面</button>
  </view>
</template>

<script>
export default {
  mounted() {
	  this.handleCustomEventBind = this.handleCustomEvent.bind(this);
    uni.$on('customEvent', this.handleCustomEventBind);
  },
  destory() {
	  uni.$off('customEvent', this.handleCustomEventBind);
  },
  methods: {
	  gotoPageB() {
		  uni.redirectTo({
				url: '/pages/pageB/pageB'
			});
	  },
    handleCustomEvent(event) {
	    console.log(event.data); // 输出: Hello from Component B
      // 处理事件的业务逻辑
      // ...
    }
  }
};
</script>

B页面

<template>
  <view>
	  <text>我是B页面</text>
    <button @tap="triggerEvent">点我</button>
  </view>
</template>

<script>
export default {
  methods: {
    triggerEvent() {
      uni.$emit('customEvent', { data: 'Hello from Component B' });
      uni.navigateBack();
    }
  }
};
</script>

注意

因为这种事件监听是全局的,所以在定义事件名的最好是是保证唯一,除非确实有多个地方要用到,而且最好是在页面销毁的时候记得清除不需要的事件监听。

标签:uniapp,handleCustomEventBind,customEvent,uni,EventBus,页面
From: https://www.cnblogs.com/xwwin/p/18225205

相关文章

  • uniapp实现图片上传——支持APP、微信小程序
    uniapp实现图片、视频上传文章目录uniapp实现图片、视频上传效果图组件templatejs使用相关文档:结合uView插件+uni.uploadFile实现u-uploaduploadfile效果图组件简单封装,还有很多属性…,自定义样式等…根据个人所需调整template<template> <view>......
  • vue项目部署后刷新页面404的原因和解决方案
    在部署Vue.js单页面应用(SPA)时,遇到刷新页面时返回404错误是一个常见问题。这个问题通常是由于服务器不知道如何处理SPA的路由而导致的。原因在Vue.jsSPA中,前端路由由VueRouter处理。当你在应用中导航时,VueRouter可以处理这些路由并加载相应的组件。但是,当你直接刷......
  • 小程序webView 实现小程序内嵌H5页面
    web-view|微信开放文档本案例新建了一个 webView页面 只渲染webView组件配置路由,跳转页面的时候 前缀使用‘/subPages/webView/index?weburl=https://xxxxx’componentDidMount 的时候 获取路由中的 weburl 地址参数asynccomponentDidMount(){co......
  • QShop商城-添加新模块/页面(CodeSmith代码生成)
    QShop商城-添加新模块/页面(CodeSmith代码生成)工具准备CodeSmith当前使用的CodeSmith71,如找不到我已分享至:https://pan.baidu.com/s/1O2Tqg3gnbToAzjH0T5ETcg?pwd=2wcv下载后按照文档CodeSmith7激活教程.doc内容激活CodeSmith 代码生成下载激活后,双击TemplateEd......
  • React后台管理(十四)-- 完整示例页面构建教学
    文章目录前言一、组件源码+详细注释说明+技术分析二、效果展示总结前言经过了前面文章的学习,终于到最后一步了,那就是一个管理页面的构建,包括处理列表请求,搜索、重置和展开/收起等功能。结合之前封装的布局、功能相关组件,在本文只需要按需引入,统一了代码标准,减少重......
  • 微信小程序 uniapp智慧捐赠系统dln9d
    1)通过查阅相关的书籍搜集材料,进行需求调查。(2)写需求分析文档,确定系统的主要模块。 (3)画出ER图,流程图等图示以用来明确模块之间的关系 (4)根据需求分析,建立数据库文档,设计表和字段。 (5)进行系统的界面设计。 (6)通过python+java+node.js+php语言和MySQL数据库实现本系统......
  • 鸿蒙HarmonyOS实战-Web组件(页面跳转和浏览记录)
    ......
  • uniapp微信小程序使用瀑布流结合z-panging组件显示pexels的图片
    最终效果如下:  瀑布流组件用的:https://ext.dcloud.net.cn/plugin?id=7594下拉刷新组件用的:https://z-paging.zxlee.cn这两个搭配起来省了很多事z-paging中组合custom-waterfalls-flow,可下拉刷新、到底自动加载下一页。下拉刷新效果: 到底自动加载下一页效果: ......
  • 监听浏览器更新URL参数,实现伪SPA单页面应用
    在老的jqury项目中通常实现SPA一般都采用hash值变化来进行监听,但是有的项目中我们也想采用改变URL参数来进行监听,一般我们使用window.history.pushState方法来改变url参数;为了在使用window.history.pushState或window.history.replaceState后能够检测到浏览器的后退按钮操作,......
  • 页面性能计算
    计算LargestContentPaint1functionobserveLargestConentPaint(){2if(!utils.canIUse('PerformanceObserver'))return;3newPerformanceObserver((entryList)=>{4for(constentryofentryList.getEntries()){5constlargest......