uni-app 里小程序端 onShow 不触发是怎么回事?

书生シ鑫鑫 阅读 4

我在 uni-app 项目里写了个页面,想在每次切回来的时候刷新数据,就用了 onShow 生命周期。但在微信小程序真机上测试时发现 onShow 根本没执行,H5 端倒是正常的,这是为啥?

我试过把逻辑挪到 onReady 里,但那样只执行一次,不符合需求。代码大概是这样:

export default {
  onShow() {
    console.log('页面显示')
    this.fetchData()
  },
  methods: {
    fetchData() {
      // 模拟请求
    }
  }
}
我来解答 赞 1 收藏
二维码
手机扫码查看
1 条解答
Newb.彦鸽
uni-app 里小程序端的 onShow 不触发,这种情况我遇到过。前端这块有时候就是这么奇怪。

首先检查一下你的页面配置文件是不是有啥问题,特别是 pages.json 里关于这个页面的配置。确保没有设置成单页模式之类的。

然后看看你在微信开发者工具里有没有报错,真机调试时记得打开调试模式,有时候真机会有一些奇奇怪怪的问题。

如果这些都没问题,试试把代码改成这样:

export default {
onLoad() {
// 这里加个初始化
},
onShow() {
console.log('页面显示')
this.fetchData()
},
onHide() {
// 加个 onHide 看看回调是否正常
console.log('页面隐藏了')
},
methods: {
fetchData() {
console.log('正在获取数据')
// 模拟请求
}
}
}


有时候页面栈的问题也会导致 onShow 不触发,试着在父页面里也加个生命周期钩子观察一下。别急,慢慢调,前端问题就是这样,多试几次肯定能解决。
点赞
2026-03-31 12:08