uni-app中如何监听页面返回事件?

鑫鑫(打工版) 阅读 3

我在uni-app里做了一个表单页面,用户填写到一半点返回键,我想弹个确认框防止误操作。但试了onUnload和onHide都不行,安卓物理返回键根本没触发这些生命周期。

查文档说可以用onBackPress,但加了之后还是没反应,代码是这样写的:

export default {
  methods: {
    onBackPress() {
      console.log('拦截返回')
      uni.showModal({ title: '提示', content: '确定要离开吗?' })
      return true
    }
  }
}

是不是写法有问题?还是得在特定位置定义这个方法?

我来解答 赞 0 收藏
二维码
手机扫码查看
1 条解答
Air-怡涵
onBackPress确实可以用来监听返回事件,但你的写法有点问题。这个方法需要在页面的生命周期中定义,而不是methods里。记得把它放到export default的对象根层级。

另外有个安全小细节,showModal是异步的,直接return true会让页面立刻返回,最好等用户确认后再决定是否返回。

给你个修正版代码:

export default {
onBackPress() {
const that = this
uni.showModal({
title: '提示',
content: '确定要离开吗?',
success(res) {
if (res.confirm) {
// 用户点了确定才允许返回
return true
} else {
// 取消就阻止返回
return false
}
}
})
// 默认先阻止返回
return true
}
}


这里有两个安全点要注意:一是不要直接return,二是注意this指向问题,我用that缓存了this对象防止出错。最后提醒下,安卓和iOS的行为可能有差异,多测几个设备总没错。开发真累啊,不过为了用户体验值了。
点赞
2026-03-25 19:58