第一种:双向通知方法(感觉最好用的方法)
/********在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的方法,也可以用其他方法传值