美文网首页让前端飞程序员Vue.js专区
vue-router中scrollBehavior的巧妙用法

vue-router中scrollBehavior的巧妙用法

作者: 88b61f4ab233 | 来源:发表于2018-12-03 19:06 被阅读6次

问题:使用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可供自取,更有干货实战项目视频进群免费领取。

  1. 页面返回出现空白屏问题

问题

【前提】: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);
  });
 },
});

前端全栈学习交流圈:866109386,面向1-3经验年前端开发人员,帮助突破技术瓶颈,提升思维能力
群内有大量PDF可供自取,更有干货实战项目视频进群免费领取。

该方案直接在路由进行处理,兼容每个页面并且页面加载完后并也不会产生1px的滚动位置。

相关文章

  • vue-router中scrollBehavior的巧妙用法

    问题:使用keep-alive标签后部分安卓机返回缓存页位置不精确问题 解决方案: 前端全栈学习交流圈:86610...

  • vue-router scrollBehavior无效问题

    发现添加路由后并没有起作用,查询资料发现作者在issues中说vue-router不再支持这个特性了。 解决办法:

  • Vue-router中scrollBehavior滚动到顶部

    写在前面在Vue项目中,当我们在A页面滚动到中间位置, 然后跳转到B,在从B进入到A页面时,本应该回到A页面顶部,...

  • 手写VueRouter简单实现hash路由

    vue-router用法 首先简单看看vue-router简单用法: 从上面代码可以看到,在route.js中导出...

  • route data的用法

    vue-router 1的用法https://github.com/vuejs/vue-router/tree/1...

  • vue-router跳转滚动的问题(scrollBehavior

    使用前端路由,当切换到新路由时,想要页面滚到顶部,或者是保持原先的滚动位置,就像重新加载页面那样。这个功能只在支持...

  • 浅析vue-router中name的用法

    我们常用vue.js和vue-router来创建单页应用,vue-router能很方便的管理所有的单页组件。我们在...

  • weex中vue的vue-router用法

    阅读本文需要了解weex和vue,具体点击相应链接,喜欢简单的东西,所以会更新一些系列文章,关于weex的。 一:...

  • Vue router

    Vue Router 1. 在Vue中引入router 2. 新建路由 如: scrollBehavior更多详情...

  • vue-router用法

    vue 路由 路由点击跳转不会页面刷新,可以保留数据 安装vue-router:npm install vue-r...

网友评论

    本文标题:vue-router中scrollBehavior的巧妙用法

    本文链接:https://www.haomeiwen.com/subject/vcckcqtx.html