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

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

前言

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

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

我们知道页面之间的跳转可以通过路由组件来实现,其中组件的属性url就是要跳转到页面的路径。
我们可以通过在路径中添加需要传递的数据来实现页面间数据通信

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

获取当前页面栈。数组中第一个元素为首页,最后一个元素为当前页面。
通过获取到相应的页面栈对象,然后根据业务需求,执行具体操作。

//数据传递
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 方法相互发送、监听事件。

//--------------------------页面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'});
http://www.lryc.cn/news/186905.html

相关文章:

  • 关于Jupyter markdown的使用
  • 【C语言】字符函数和内存操作函数
  • SpringBoot大文件上传实现分片、断点续传
  • React 注意事项
  • 常见排序算法Java版(待续)
  • Jmeter 多实例压测
  • 线程安全问题 --- 内存可见性问题
  • 消息队列 Kafka
  • 抽象轻松的java-mybatis简单入门
  • 012-第二代硬件选型
  • Spring中的设计模式
  • 软考 系统架构设计师系列知识点之软件质量属性(1)
  • GPT系列论文解读:GPT-1
  • 数学分析:含参变量的积分
  • 关于一篇ElementUI之CUD+表单验证
  • VUE模板编译的实现原理
  • 基础算法之——【动态规划之路径问题】1
  • 三十三、【进阶】索引的分类
  • VBox启动失败、Genymotion启动失败、Vagrant迁移
  • 一篇短小精悍的文章让你彻底明白KMP算法中next数组的原理
  • CSS盒子定位的扩张
  • SpringBoot整合POI实现Excel文件读写操作
  • 从零开始的力扣刷题记录-第八十七天
  • 【1】c++设计模式——>UML类图的画法
  • SAP UI5 指定 / 变更版本
  • SpringMVC中异常处理详解
  • PPT课件培训视频生成系统实现全自动化
  • Densenet--->比残差力度更大 senet-->本质抑制特征
  • 基于腾讯云的OTA远程升级
  • 如何在VS2022中进行调试bug,调试的快捷键,debug与release之间有什么区别