vue

网友投稿 275 2023-01-26


vue

问题:使用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请求

fetchCourseListwaWPAZhZoV().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的巧妙用法,希望对大家有所帮助,如果大家有任何疑问请给我留言,会及时回复大家的。在此也非常感谢大家对我们网站的支持!


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:详解vue中组件参数
下一篇:京东接口自动化测试演进(京东测试开发)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~