最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

vue-router中scrollBehavior的巧妙用法

来源:动视网 责编:小采 时间:2020-11-27 22:11:48
文档

vue-router中scrollBehavior的巧妙用法

vue-router中scrollBehavior的巧妙用法:问题:使用keep-alive标签后部分安卓机返回缓存页位置不精确问题 解决方案: <div id=app> <keep-alive> <router-view v-if=$route.meta.keepAlive></router-view> </keep-aliv
推荐度:
导读vue-router中scrollBehavior的巧妙用法:问题:使用keep-alive标签后部分安卓机返回缓存页位置不精确问题 解决方案: <div id=app> <keep-alive> <router-view v-if=$route.meta.keepAlive></router-view> </keep-aliv


问题:使用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 };
 },
});

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

文档

vue-router中scrollBehavior的巧妙用法

vue-router中scrollBehavior的巧妙用法:问题:使用keep-alive标签后部分安卓机返回缓存页位置不精确问题 解决方案: <div id=app> <keep-alive> <router-view v-if=$route.meta.keepAlive></router-view> </keep-aliv
推荐度:
标签: 使用 的使用 router
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top