记录一个uni.$on定义完成后才能接收到uni.$emit传递的数据的解决方案

第一种:双向通知方法(感觉最好用的方法)

/********在A页面*************/
//这样处理目的是为了互相监听,先创建$on	
uni.$once('modal2', function() {
				uni.$emit('modal1', obj)
			})

/********在B页面*************/
//先创建一个需要接收参数的uni.$once  记得箭头函数为了this指向
uni.$once('modal1', (data) => {
				this.preData = data
			})
//再告知A页面可以传参过来了,只要A页面还存在就可以
uni.$emit('modal2')

第二种:借uni.navigateTo的成功回调方法

uni.navigateTo({
				url: `/pages/b/b`,
				success: (res) => {
            //这种方法会有回调延迟,大概几百毫秒,b页面会有闪烁,不过免了定时器
				uni.$emit('modal1', obj)
				}
			})

//b页面正常接收
onLoad(options = {}) {
			uni.$once('modal1', (data) => {
				this.preData = data
			})
		},

第三种:给a页面的emit加定时器,预判b页面的on创建完成

//a页面
setTimeout(()=>{
		uni.$emit('modal1', obj)
		},200)
uni.navigateTo(...)

//b接收
onLoad(options = {}) {
			uni.$once('modal1', (data) => {
				this.preData = data
			})
		},

目前发现这三种方式,这是通过$emit与$on的方法,也可以用其他方法传值

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值