vue-router中scrollBehavior的巧妙用法


Posted in Javascript onJuly 09, 2018

问题:使用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页面
         --->屏幕会出现空白遮罩层--->手指轻触屏幕滑动--->遮罩层消失

vue-router中scrollBehavior的巧妙用法 

解决方案一

在接口请求成功后的回调操作完成后进行该操作,例如

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

Javascript 相关文章推荐
在b/s开发中经常用到的javaScript技术
Aug 23 Javascript
jQuery中绑定事件的命名空间详解
Apr 05 Javascript
javascript处理表单示例(javascript提交表单)
Apr 28 Javascript
js使用DOM设置单选按钮、复选框及下拉菜单的方法
Jan 20 Javascript
JS动态显示表格上下frame的方法
Mar 31 Javascript
javascript实现Email邮件显示与删除功能
Nov 21 Javascript
jQuery编写textarea输入字数限制代码
Mar 23 jQuery
jQuery模拟爆炸倒计时功能实例代码
Aug 21 jQuery
vue指令只能输入正数并且只能输入一个小数点的方法
Jun 08 Javascript
用 js 写一个 js 解释器过程详解
Aug 02 Javascript
JavaScript实现指定数量的并发限制的示例代码
Mar 10 Javascript
jQuery实现鼠标拖拽登录框移动效果
Sep 13 jQuery
JavaScript解决浮点数计算不准确问题的方法分析
Jul 09 #Javascript
Vue自定义指令封装节流函数的方法示例
Jul 09 #Javascript
JavaScript实现创建自定义对象的常用方式总结
Jul 09 #Javascript
vue-cli配置环境变量的方法
Jul 09 #Javascript
JS逻辑运算符短路操作实例分析
Jul 09 #Javascript
微信小程序中时间戳和日期的相互转换问题
Jul 09 #Javascript
使用async await 封装 axios的方法
Jul 09 #Javascript
You might like
Protoss魔法科技
2020/03/14 星际争霸
php中模拟POST传递数据的两种方法分享
2011/09/16 PHP
PHP错误WARNING: SESSION_START() [FUNCTION.SESSION-START]解决方法
2014/05/04 PHP
PHP使用feof()函数读文件的方法
2014/11/07 PHP
PHP实现XML与数据格式进行转换类实例
2015/07/29 PHP
thinkPHP5.0框架URL访问方法详解
2017/03/18 PHP
Yii2.0框架实现带分页的多条件搜索功能示例
2019/02/20 PHP
如何让PHP编码更加好看利于阅读
2019/05/12 PHP
Yii框架中用response保存cookie,用request读取cookie的原理解析
2019/09/04 PHP
JQuery实现的在新窗口打开链接的方法小结
2010/04/22 Javascript
jquery入门—访问DOM对象方法
2013/01/07 Javascript
JS中 用户登录系统的解决办法
2013/04/15 Javascript
jQuery实现仿QQ在线客服效果的滚动层代码
2015/10/15 Javascript
利用Angularjs和原生JS分别实现动态效果的输入框
2016/09/01 Javascript
Node.js的特点详解
2017/02/03 Javascript
jQuery插件echarts实现的单折线图效果示例【附demo源码下载】
2017/03/04 Javascript
Vue下拉框回显并默认选中随机问题
2018/09/06 Javascript
vue.js使用v-model实现父子组件间的双向通信示例
2020/02/05 Javascript
Vue两个版本的区别和使用方法(更深层次了解)
2020/02/16 Javascript
Python与R语言的简要对比
2017/11/14 Python
python微信跳一跳系列之色块轮廓定位棋盘
2018/02/26 Python
python PyAutoGUI 模拟鼠标键盘操作和截屏功能
2019/08/04 Python
pandas DataFrame 数据选取,修改,切片的实现
2020/04/24 Python
基于python实现判断字符串是否数字算法
2020/07/10 Python
中国跨境海淘网站:考拉海购
2016/08/01 全球购物
德国baby-markt婴儿用品瑞士网站:baby-markt.ch
2017/06/09 全球购物
土耳其玩具商店:Toyzz Shop
2019/08/02 全球购物
电脑销售顾问自荐信
2014/01/29 职场文书
工厂会计员职责
2014/02/06 职场文书
致跳远运动员广播稿
2014/02/11 职场文书
网页美工求职信范文
2014/04/17 职场文书
连带责任保证书
2014/04/29 职场文书
九一八事变演讲稿
2014/09/05 职场文书
开展党的群众路线教育实践活动情况汇报
2014/11/05 职场文书
小石潭记导游词
2015/02/03 职场文书
React如何使用axios请求数据并把数据渲染到组件
2022/08/05 Javascript