问题:A页面正常跳转B页面,B页面用手势右滑屏幕返回到A页面,A页面不执行任何生命周期方法(onMounted,watch等等)如果使用浏览器底部的返回按钮,则是正常的
技术栈:vue3
环境:iphone12,iOS16
期望:需要执行一个在onMounted里面的方法,获取新数据
问题:A页面正常跳转B页面,B页面用手势右滑屏幕返回到A页面,A页面不执行任何生命周期方法(onMounted,watch等等)如果使用浏览器底部的返回按钮,则是正常的
技术栈:vue3
环境:iphone12,iOS16
期望:需要执行一个在onMounted里面的方法,获取新数据
Safari浏览器手势右滑返回上一页时,上一页会从缓存中加载,而不会重新执行生命周期钩子,你可以写一个 pageshow 事件监听器。
你在 A 页面中,你可以这样处理一下:
import { onMounted, onUnmounted } from 'vue';
onMounted(() => {
window.addEventListener('pageshow', onPageShow);
});
onUnmounted(() => {
window.removeEventListener('pageshow', onPageShow);
});
function onPageShow(event) {
if (event.persisted) {
// 页面是从缓存加载的,这里执行你的逻辑
}
}
10 回答11.1k 阅读
6 回答3k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.6k 阅读✓ 已解决
3 回答5.1k 阅读✓ 已解决
3 回答1.8k 阅读✓ 已解决
或者用路由守卫
或者这个