有一个小技巧可以规避这个bug.
思路
经过反复实验发现在第二次跳转及以后是先执行完第二个页面的生命周期,再执行uni.navigateTo的success,所以可以通过页面栈获取第二个页面,然后直接调用页面中的methods传参.代码如下.
路由跳转代码:
option.success = function(res) {
let pages = getCurrentPages()
if(option.url == ("/" + pages[pages.length-1].route)){
pages[pages.length-1].routeParameterEvent(option.parameter)
}else{
res.eventChannel.emit(res.eventChannel.id, option.parameter)
}
}
uni.navigateTo(option);
第二个页面接收参数代码:
onLoad: function(option) {
// #ifdef APP-NVUE
const eventChannel = this.$scope.eventChannel; // 兼容APP-NVUE
// #endif
// #ifndef APP-NVUE
const eventChannel = this.getOpenerEventChannel();
// #endif
this.eventChannel = eventChannel
// // 监听routeParameterEvent事件,获取上一页面通过eventChannel传送到当前页面的数据
eventChannel.on(eventChannel.id, this.routeParameterEvent)
},
methods: {
routeParameterEvent(data) {
this.routeParameter = data
}
}
第四维
好用,成功解决,谢谢~
2022-10-27 23:09