y***@gmail.com
y***@gmail.com
  • 发布:2025-11-19 17:07
  • 更新:2025-12-01 17:07
  • 阅读:88

我怎么区分页面的onshow 是从别的页面返回的 还是 从后台切回来的

分类:uni-app

我现在在页面 onshow 定义了一个 查询数据的方法 这样从别的页面返回就会触发这个
问题 : 每次从app 后台切回来应用 或者 浏览器tab切换回来我的网站 也会触发 我希望把这个情况排除掉 有没有方案

2025-11-19 17:07 负责人:无 分享
已邀请:
爱豆豆

爱豆豆 - 办法总比困难多

App.vue中的onShow app 后台/浏览器tab切换 到应用时都会触发这个
页面跳转不会触发App.vue中的onShow 可以试试在这里做一些判断

  • y***@gmail.com (作者)

    对哦 我可以在页面监听

    2025-11-19 18:30

8***@qq.com

8***@qq.com -

“你希望只在从详情页返回列表页、且详情页有数据变更时,才刷新列表;其他任何情况(比如 App 从后台唤醒、浏览器 tab 切回来)都不刷新。”这是你的需求吧,可以列表页面定义个needRefresh字段,默认false,跳转到详情页面时,通过uni-app 官方提供了 eventChannel 机制,在特定时机将needRefresh = true, 然后onshow里面判断这个值是否查询数据
uni.navigateTo({
url: /pages/detail/detail?id=${id},
events: {
// 监听详情页是否要求刷新
refreshList: (payload) => {
if (payload?.shouldRefresh) {
this.needRefresh = true;
}
}
}
});

onShow() {
if (this.needRefresh) {
this.needRefresh = false; // 用完即清,防止重复刷新
//这里查询数据
}
}

//这是详情页面触发刷新
const eventChannel = this.getOpenerEventChannel();
eventChannel.emit('refreshList', { shouldRefresh: true });

要回复问题请先登录注册