vue-router中scrollBehavior的巧妙用法 问题:使用keep-alive标签后部分安卓机返回缓存页位置不精确问题 解决方案:
const router = new Router({ scrollBehavior(to, from, savedPosition) { if (savedPosition && to.meta.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.meta.keepAlive) { return savedPosition; } // 异步滚动操作 return new Promise((resolve) => { setTimeout(() => { resolve({ x: 0, y: 1 }); }, 0); }); }, }); 该方案直接在路由进行处理,兼容每个页面并且页面加载完后并也不会产生1px的滚动位置。 总结 以上所述是小编给大家介绍的vue-router中scrollBehavior的巧妙用法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对中文源码网网站的支持!