uniapp vue3页面跳转对象传参工具(优雅永不过时)

vue3页面跳转对象传参工具

/* 
 vue3页面跳转对象传参工具
>>>>>>>>>>>>> a.vue >>>>>>>>>>>>> 
 uni.navigateTo({
 	url: '/pages/biz/goods/commodityinfo/placeOrder',
 	// 页面跳转传参数(navigateTo 调用成功后)
 	success: (res) => {
		// 发送数据到b.vue
 		res.eventChannel.emit('placeOrder', {
 			data: scope
 		})
 	},
 	events: {
 		// 监听b.vue返回的参数
 		successful(data) {
 			console.log(JSON.stringify(data,null,2))
 		},
 	}
 })
>>>>>>>>>>>>>   b.vue  >>>>>>>>>>>>> 
 
 const {
 	proxy
 } = getCurrentInstance()
 
 //接收a.vue页面数据
 uni.$tool.page.receive(proxy, 'placeOrder', (data) => {
 	console.log(JSON.stringify(data, null, 2))
 })
 
 //发送数据到a.vue
 uni.$tool.page.send('successful', {
 	data: 'placeOrder Success'
 })
 //返回上级页面
 uni.navigateBack({
 	delta: 1
 })
 
 */

export default {
	send(eventName, data) {
		const pages = getCurrentPages()
		const prevPage = pages[pages.length - 2]; // 上一个页面
		prevPage.getOpenerEventChannel().emit(eventName, data);
	},
	receive(instance, eventName, callback) {
		const eventChannel = instance.getOpenerEventChannel();
		if (!eventChannel) {
			console.error('getOpenerEventChannel is undefined');
			return;
		}
		eventChannel.on(eventName, (data) => {
			if (typeof callback === 'function') {
				callback(data);
			} else {
				console.error('Callback is not a function');
			}
		});
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

幽·

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值