首页 > 编程语言 >微信小程序(uniapp)页面之间通信

微信小程序(uniapp)页面之间通信

时间:2024-06-05 12:05:31浏览次数:18  
标签:uniapp vue title 微信 source 123 data 页面

前言

开发微信小程序,页面与页面之间少不了数据通信,一起来看看有哪些方法。


以下是本篇文章正文内容,下面案例可供参考

一、跳转路径?拼接参数

适合数据量小的情况,如数据量大的情况不建议此方式。注意:如传递了number类型数据,接收回来的数据会转换成string类型

/** A.vue **/
<script>
methods: {
	goRouter(){
		uni.navigateTo({
			url: `/pages/index/test?data=123&title=A页面&source=1`
		})
	}
}
</script>


/** B.vue **/
<script>
onLoad(option) {
	console.log(option) // {data: "123", title: "A页面",source: "1"}
}
</script>

二、通过eventChannel事件进行通信

适合数据量大的情况。注意:此类方法如果不通过A页面直接跳转B页面会报错

/** A.vue **/
<script>
methods: {
	goRouter(){
		uni.navigateTo({
			url: `/pages/index/test`,
			success: function(res) {
   			 	res.eventChannel.emit('pageData', {data: 123, title: "A页面",source: 1, content: "点个赞点个赞,求求了"})
  			}
		})
	}
}
</script>


/** B.vue **/
<script>
onLoad(option) {
  const eventChannel = this.getOpenerEventChannel();
  // eventChannel.on监听,获取上一页面通过eventChannel事件传送的数据
  eventChannel.on('pageData', data=> {
    console.log(data) // {data: 123, title: "A页面",source: 1, content: "点个赞点个赞,求求了"}
  })
}
</script>

三、通过缓存方式传递数据(不推荐)

此类方法虽简单适用所有页面,但一般不推荐使用该方法。

/** A.vue **/
<script>
methods: {
	goRouter(){
		uni.setStorageSync('pageData', {data: 123, title: "A页面",source: 1, content: "点个赞点个赞,求求了"})
		uni.navigateTo({
			url: `/pages/index/test`
		})
	}
}
</script>


/** B.vue **/
<script>
onLoad() {
  const data = uni.getStorageSync('pageData');
  console.log(data) // {data: 123, title: "A页面",source: 1, content: "点个赞点个赞,求求了"}
}
</script>

四、Vuex全局通信

/** A.vue **/
<script>
import {
	mapMutations
} from 'vuex';
methods: {
	...mapMutations(['setDataInfo']),
	goRouter(){
		this.setDataInfo({data: 123, title: "A页面",source: 1, content: "点个赞点个赞,求求了"})
		uni.navigateTo({
			url: `/pages/index/test`
		})
	}
}
</script>


/** B.vue **/
<script>
import {
	mapState
} from 'vuex';
onLoad() {
  console.log(this.pageData); // {data: 123, title: "A页面",source: 1, content: "点个赞点个赞,求求了"}
},
computed: {
	...mapState({
		pageData: state => state.page.pageInfo
	})
},
</script>

五、globalData

/** App.vue **/
<script>
globalData: {
	data: 123,
	title: "A页面",
	source: 1,
	content: "点个赞点个赞,求求了"
}
</script>


/** B.vue **/
<script>
onLoad() {
  console.log(this.globalData.data) // 123
  console.log(this.globalData.title) // "A页面"
  console.log(this.globalData.source) // 1
  console.log(this.globalData.content) // "点个赞点个赞,求求了"
}
</script>

六、子页面向父页面传递数据

通过uni.$emit事件订阅传递数据,uni.$on监听接收数据。

/** B.vue **/
<script>
methods: {
	back() {
		uni.$emit('pageData', {data: 123, title: "B页面",source: 1, content: "点个赞点个赞,求求了"});
		uni.navigateBack({
			delta: 1
		});
	}
}
</script>


/** A.vue **/
<script>
onLoad() {
  uni.$on('pageData', data => {
	console.log(data) // {data: 123, title: "B页面",source: 1, content: "点个赞点个赞,求求了"}
  })
}
</script>

总结

本文简单介绍了微信小程序页面之间数据通信,若有其他更好的通信方式,欢迎评论区补充。

标签:uniapp,vue,title,微信,source,123,data,页面
From: https://blog.csdn.net/Rocky_Time/article/details/139245927

相关文章

  • 微信公众号的广告投放实施攻略
    微信公众号作为微信生态的重要组成部分,拥有庞大的用户群体和强大的社交属性。对于企业而言,如何在微信公众号上投放广告,实现精准触达和高效转化,是营销的重要课题。本文将为你提供一份详细的微信公众号广告投放实施攻略,帮助你从零开始,逐步掌握投放技巧。一、定位与选择在投放......
  • SpringBoot+微信支付-JSAPI{微信支付回调}
    引入微信支付SDKMaven:com.github.wechatpay-apiv3:wechatpay-java-core:0.2.12Maven:com.github.wechatpay-apiv3:wechatpay-java:0.2.12响应微信回调的封装@Getter@Setter@NoArgsConstructor@AllArgsConstructor@Accessors(chain=true)publicclassWxNotifyVo{......
  • 企业微信群发功能:提升沟通效率,助力企业营销
    随着信息技术的快速发展,企业微信作为企业内部沟通和企业对外营销的重要工具,其功能也在不断更新和完善。其中,企业微信的多次群发功能,不仅极大地提升了企业内部的沟通效率,更为企业的对外营销提供了强有力的支持。本文将从多个角度探讨企业微信群发功能的应用与价值。一、群发功......
  • 企业微信自动群发工具:高效沟通的得力助手
    随着企业数字化转型的加速,企业微信作为企业内部沟通的重要工具,其功能和效率成为了企业关注的焦点。在众多功能中,自动群发工具凭借其高效、便捷的特点,成为了企业沟通的新宠。本文将详细介绍企业微信自动群发工具的特点、应用场景及其在企业运营中的重要作用。一、自动群发工具......
  • Vue 前端页面利用MediaRecorder实现音频录制
    Don'tTalk,codeishere:重点是startRecord方法<template><div><el-tooltipclass="item"effect="dark"content="再次点击【开始录音】即为重新录制,之前录制的将被作废"placement="top"><el-button:disabled=......
  • UniApp-CURD
    药品添加<template> <viewclass="content"> <viewclass="form-container"> <viewclass="form-item"> <labelclass="label">药品名称</label> <inputtype="text"class=......
  • 基于微信小程序的健身小助手打卡预约教学系统(源码+lw+部署文档+讲解等)
    文章目录前言详细视频演示项目运行截图技术框架后端采用SpringBoot框架前端框架Vue可行性分析系统测试系统测试的目的系统功能测试数据库表设计代码参考数据库脚本为什么选择我?获取源码前言......
  • SpringBoot+微信支付-JSAPI
    引入微信支付SDKMaven:com.github.wechatpay-apiv3:wechatpay-java-core:0.2.12Maven:com.github.wechatpay-apiv3:wechatpay-java:0.2.12代码示例packagexxxx.cashier.payChannel.handler;importxxxx.common.domain.model.exception.BusinessException;importxxxx.c......
  • 健身管理小程序|基于微信开发健身管理小程序的系统设计与实现(源码+数据库+文档)
    健身管理小程序目录基于微信开发健身管理小程序设计与实现一、前言二、系统设计三、系统功能设计 小程序端:后台四、数据库设计 五、核心代码 六、论文参考七、最新计算机毕设选题推荐八、源码获取:博主介绍:✌️大厂码农|毕设布道师,阿里云开发社区乘风者计划专......
  • Manjaro Linux下使用wine运行企业微信
    开始因为工作原因所以必须用到企业微信,但是企业微信是目前主流办公软件中可能唯一一个不支持Linux系统的软件了,于是只能使用wine来运行windows版本来使用。期间遇到了各种坑在此记录一下,以便于能帮到同样需要的同学,也希望腾讯能够尽快开发Linux原生的企业微信。安装首先我们需......