问题:使用keep-alive标签后部分安卓机返回缓存页位置不精确问题
解决方案:
<div id="app">
<keep-alive>
<router-view v-if="$route. .keepAlive"></router-view>
</keep-alive>
<router-view v-if="!$route. .keepAlive"></router-view>
</div>
const router = new Router({
scrollBehavior(to, from, savedPosition) {
if (savedPosition && to. .keepAlive) {
return savedPosition;
}
return { x: 0, y:0 };
},
});
2. 页面返回出现空白屏问题
问题
【前提】:iOS设备
【步骤】: 页面A是个列表很长-->滑到页脚的时候点击跳转之后到页面B--->再返回A页面
--->屏幕会出现空白遮罩层--->手指轻触屏幕滑动--->遮罩层消失
解决方案一
在接口请求成功后的回调操作完成后进行该操作,例如
// fetchCourseList是一个封装好的Promise请求
fetchCourseList().then(({ data: courses }) => {
this.courses = courses;
}).then(() => {
setTimeout(() => {
window.scrollTo(0, 1);
window.scrollTo(0, 0);
});
});
该方案的弊端: 每个页面都需要做这样的处理,不推荐使用。
解决方案二(推荐)
使用scrollBehavior中的异步滚动操作
const router = new Router({
scrollBehavior(to, from, savedPosition) {
// keep-alive 返回缓存页面后记录浏览位置
if (savedPosition && to. .keepAlive) {
return savedPosition;
}
// 异步滚动操作
return new Promise((resolve) => {
setTimeout(() => {
resolve({ x: 0, y: 1 });
}, 0);
});
},
});
该方案直接在路由进行处理,兼容每个页面并且页面加载完后并也不会产生1px的滚动位置。
总结
以上所述是小编给大家介绍的vue-router中scrollBehavior的巧妙用法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!
继续阅读与本文标签相同的文章
上一篇 :
iOS安全防护系列之字符串及系统函数隐藏详解
下一篇 :
你的下一部 iPhone,印度制造
-
德国市场不封杀华为5G:公平竞争
2026-05-14栏目: 教程
-
开封市“离婚率”数据大曝光!开封市哪些职业“出轨率”最高名单排行!
2026-05-14栏目: 教程
-
任正非:华为不是家族企业,外籍人士也可以做华为CEO!
2026-05-14栏目: 教程
-
AI×5G,智能互联迎来发展新动能
2026-05-14栏目: 教程
-
Y5T289 Infinera今年ECOC推出点对多点相干光模块
2026-05-14栏目: 教程
