微信小程序 -- 页面间通信

前言

今天我们来说下微信小程序的页面间通信:

  1. 通过url传参实现页面间单向通信
  2. 通过getCurrentPages()页面栈实现页面间单向通信
  3. 通过EventChannel实现页面间双向通信
1、url传参

我们知道页面之间的跳转可以通过路由组件来实现,其中组件的属性url就是要跳转到页面的路径。

我们可以通过在路径中添加需要传递的数据来实现页面间数据通信

js 复制代码
//数据传递
wx.navigateTo({
	url: '../../followUp/index?aa=1256&bb=jkkk'
})
//数据接收
onLoad: function (options) {
	const {info} = options;
},
2、getCurrentPages()

获取当前页面栈。数组中第一个元素为首页,最后一个元素为当前页面。

通过获取到相应的页面栈对象,然后根据业务需求,执行具体操作。

js 复制代码
//数据传递
let curPages = getCurrentPages();//获取当前页面栈列表
var prevPage = curPages[curPages.length - 2];//上一页面栈对象
prevPage.setData({
	aa:'111111',
	bb:'2222222',
});
prevPage.updateInfo();
2、EventChannel

如果一个页面(B)由另一个页面(A)通过 wx.navigateTo 打开,这两个页面间将建立一条数据通道:

被打开的页面可以通过 this.getOpenerEventChannel() 方法来获得一个 EventChannel 对象;

wx.navigateTo 的 success 回调中也包含一个 EventChannel 对象。

这两个 EventChannel 对象间可以使用 emit 和 on 方法相互发送、监听事件。

js 复制代码
//--------------------------页面A--------------------------
wx.navigateTo({
  url: '../../followUp/index',
  events: {
  	//接收页面B传递的数据
    two: function (data) {
      console.log(data)
    },
  },
  success:function(res){
  	//向页面B传递数据
    res.eventChannel.emit('one', { data: 'data one' })
  },
})
// --------------------------页面B--------------------------
//接收数据
const eventChannel = this.getOpenerEventChannel()
eventChannel.on('one', function (data) {
  console.log(data)
})
//发送数据
const eventChannel = this.getOpenerEventChannel()
eventChannel.emit('two', { data: 'data two'});
相关推荐
老华带你飞1 小时前
健身房预约|基于springboot 健身房预约小程序系统(源码+数据库+文档)
java·数据库·vue.js·spring boot·后端·小程序
2501_915909061 小时前
苹果应用加密方案的一种方法,在没有源码的前提下,如何处理 IPA 的安全问题
android·安全·ios·小程序·uni-app·iphone·webview
2501_915909061 小时前
iOS 项目中常被忽略的 Bundle ID 管理问题
android·ios·小程序·https·uni-app·iphone·webview
2501_915921432 小时前
iOS App 测试的工程化实践,多工具协同的一些尝试
android·ios·小程序·https·uni-app·iphone·webview
TE-茶叶蛋2 小时前
UnoCSS 集成指南 - 小程序适配原理
小程序
李慕婉学姐3 小时前
基于微信小程序的运动会信息管理系统k6kqgy34(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
数据库·微信小程序·小程序
风月歌3 小时前
小程序项目之驾校报名小程序源代码(java+vue+小程序+mysql)
java·vue.js·mysql·小程序·毕业设计·源码
咸虾米_3 小时前
uniapp+unicloud实战项目,九两酒微信小程序商城及后台管理系统前后端部署运行步骤
微信小程序·uni-app·uniapp实战项目·unicloud云开发·vue3后台管理
风月歌3 小时前
小程序项目之使命召唤游戏助手源代码(java+vue+小程序+mysql)
java·mysql·小程序·毕业设计·源码
小码哥0683 小时前
家政服务管理系统(源码+文档+部署+讲解)
小程序·家政系统·家政服务系统·家政服务管理系统