vue-router中scrollBehavior的巧妙用法
问题:使用keep-alive标签后部分安卓机返回缓存页位置不精确问题
解决方案:
<div id="app">
<keep-alive>
<router-view v-if="$route.meta.keepAlive"></router-view>
</keep-alive>
<router-view v-if="!$route.meta.keepAlive"></router-view>
</div>
const router = new Router({
scrollBehavior(to, from, savedPosition) {
if (savedPosition && to.meta.keepAlive) {
return savedPosition;
}
return { x: 0, y:0 };
},
});
前端全栈学习交流圈:866109386,面向1-3经验年前端开发人员,帮助突破技术瓶颈,提升思维能力 群内有大量PDF可供自取,更有干货实战项目视频进群免费领取。
页面返回出现空白屏问题
问题
【前提】:iOS设备 【步骤】: 页面A是个列表很长-->滑到页脚的时候点击跳转之后到页面B--->再返回A页面 --->屏幕会出现空白遮罩层--->手指轻触屏幕滑动--->遮罩层消失
解决方案一
在接口请求成功后的回调操作完成后进行该操作,例如
// fetchCourseList是一个封装好的Promise请求
fetchCourseList().then(www.taohuayuangw.com({www.wanchuang178.cn data: courses }) => {
this.courses = courses;
}).then(() => {
setTimeout(() =www.haom178.com/> {
window.scrollTo(0, 1);
window.scrollTo(0, 0);
});
});
该方案的弊端: 每个页面都需要做这样的处理,不推荐使用。
解决方案二(推荐)
使用scrollBehavior中的异步滚动操作
const router =www.michenggw.com new Router({
scrollBehavior(to, from, savedPosition) {
// keep-alive 返回缓存页面后记录浏览位置
if (savedPosition && to.meta.keepAlive) {
return savedPosition;
}
// 异步滚动操作
return new Promise((resolve) => {
setTimeout((www.gcyl158.com) => {
resolve({ x: 0, y: 1 });
最新文章
- 获取iis网站信息
- TCP/IP之四书五经[转自2003.12程序员]
- Mac Pro 修改主机名
- ecshop之transport和jquery冲突之完美解决方案
- nginx做反向代理负载均衡 Java怎么获取后端服务器获取用户IP
- Python超级程序员使用的开发工具
- Ubuntu 下无法Tab键自动补全功能解决办法
- 第三百二十三天 how can I 坚持
- Mysql中natural join和inner join的区别
- 【Cocos2d-X开发学习笔记】第28期:游戏中音乐和音效的使用
- Effective Java 第三版——27. 消除非检查警告
- dynamic的使用
- 【转】C++拷贝构造函数详解
- PowerDesigner 中模型设计导出Excel表格
- Java RMI HelloWorld
- Integer与int区别
- UMD编码规范
- selinux配置错误实例介绍
- 《DSP using MATLAB》Problem 3.9
- 《iOS Human Interface Guidelines》——Search Bar