在一些复杂的业务场景中,可能需要实现返回多级页面。
然而,uni.navigateBack()
调用时,不仅会执行页面返回操作,还会触发 onBackPress
函数。如果在 onBackPress
内部不加区分地直接调用 uni.navigateBack()
并持续返回 true
,这将导致程序进入一个死循环。以下是示例代码:
1、定义 onBackPress 方法:
在页面的生命周期中实现 onBackPress
,根据来源判断是否执行返回。
onBackPress(options) {
if (options.from === 'navigateBack') {
return false; // 避免死循环
}
this.back(); // 调用自定义的多级返回方法
return true; // 阻止默认返回行为
},
2、实现多级返回方法:
创建一个方法来处理多级页面的返回。
methods: {
back() {
uni.navigateBack({ delta: 2 }); // 'delta' 表示需要返回的页面数量
},
},
这样就能避免 uni.navigateBack()
触发 onBackPress
导致的死循环了。