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

前言

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


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

一、跳转路径?拼接参数

适合数据量小的情况,如数据量大的情况不建议此方式。注意:如传递了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>

总结

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

  • 12
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1. Uniapp是什么? Uniapp是一个基于Vue.js开发的多端应用框架,它可以开发出一套代码,同时支持编译成小程序、H5、App等多个平台,实现一次开发,多端部署。 2. 微信小程序是什么? 微信小程序是微信公众平台提供的一种新的应用形态,它不需要下载安装即可使用,具有轻便、快捷的特点,可以在微信中直接使用。 3. Uniapp如何开发微信小程序? 首先,需要在Uniapp中选择微信小程序模板进行项目创建,然后在Uniapp中编写代码,包括页面、组件、API等。最后,使用微信开发者工具将Uniapp项目编译成微信小程序。 4. Uniapp支持哪些微信小程序特性? Uniapp支持微信小程序的大部分特性,包括WXSS样式、WXML模板、JS逻辑代码等。同时,Uniapp还提供了一些特有的API,如跨页面通信、全局变量等。 5. 如何在Uniapp中使用微信小程序的API? 在Uniapp中使用微信小程序的API需要借助Uniapp提供的封装函数。Uniapp封装了一些常用的微信小程序API,如wx.request、wx.showToast等,可以直接在Uniapp中调用。 6. 如何在Uniapp中使用微信小程序的组件? 在Uniapp中使用微信小程序的组件需要将组件代码复制到Uniapp中,并进行相应的修改。同时,Uniapp也提供了一些封装好的组件,如uni-list、uni-icons等,方便开发者使用。 7. 如何在Uniapp中使用微信小程序的插件? 在Uniapp中使用微信小程序的插件需要安装插件并进行相应的配置。Uniapp支持使用微信小程序的插件,如wxParse、wxCharts等。 8. 如何在Uniapp中进行微信小程序的调试和发布? 在Uniapp中进行微信小程序的调试和发布需要使用微信开发者工具。开发者可以在Uniapp中进行代码编写和调试,然后使用微信开发者工具将Uniapp项目编译成微信小程序,最后在微信开发者工具中进行测试和发布。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值