Vue 实现前进刷新后退不刷新的效果


Posted in Javascript onJune 14, 2019

需求一:

在一个列表页中,第一次进入的时候,请求获取数据。

点击某个列表项,跳到详情页,再从详情页后退回到列表页时,不刷新。

也就是说从其他页面进到列表页,需要刷新获取数据,从详情页返回到列表页时不要刷新。

解决方案在 app.vue 设置:

<keep-alive include="list">
<router-view/>
</keep-alive>

假设列表页为 list.vue ,详情页为 detail.vue ,这两个都是子组件。

我们在 keep-alive 添加列表页的名字,缓存列表页。

然后在列表页的 created 函数里添加ajax请求,这样只有第一次进入到列表页的时候才会请求数据,当从列表页跳到详情页,再从详情页回来的时候,列表页就不会刷新。

这样就可以解决问题了。

需求二:

在需求一的基础上,再加一个要求:

可以在详情页中删除对应的列表项,这时返回到列表页时需要刷新重新获取数据。

我们可以在路由配置文件上对 detail.vue 增加一个 meta 属性。

{
  path:'/detail',
  name:'detail',
  component:() => import('../view/detail.vue'),
  meta:{ isRefresh:true }
}

这个 meta 属性,可以在详情页中通过 this.$route.meta.isRefresh 来读取和设置。 设置完这个属性,还要在 App.vue 文件里设置 watch 一下 $route 属性。

watch:{
  $route(to, from) {
    const fname = from.name
    const tname = to.name
    if (from.meta.isRefresh || (fname != 'detail' && tname == 'list')) {
      // 在这里重新请求数据
      from.meta.isRefresh = false
    }
  }
}

这样就不需要在列表页的 created 函数里用 ajax 来请求数据了,统一放在 App.vue 里来处理。

触发请求数据有两个条件:

  1. 从其他页面(除了详情页)进来列表时,需要请求数据。
  2. 从详情页返回到列表页时,如果详情页 meta 属性中的 isRefresh 为 true ,也需求重新请求数据。

当我们在详情页中删除了对应的列表项时,就可以将详情页 meta 属性中的 isRefresh 设为 true 。这时再返回到列表页,页面会重新刷新。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
jquery一般方法介绍 入门参考
Jun 21 Javascript
fixedBox固定div漂浮代码支持ie6以上大部分主流浏览器
Jun 26 Javascript
让html页面不缓存js的实现方法
Oct 31 Javascript
node.js中格式化数字增加千位符的几种方法
Jul 03 Javascript
jquery ajax局部加载方法详解(实现代码)
May 12 Javascript
jquery 实现滚动条下拉时无限加载的简单实例
Jun 01 Javascript
常用原生js自定义函数总结
Nov 20 Javascript
Express之get,pos请求参数的获取
May 02 Javascript
一次围绕setTimeout的前端面试经验分享
Jun 15 Javascript
分享5个小技巧让你写出更好的 JavaScript 条件语句
Oct 20 Javascript
JavaScript中常用的简洁高级技巧总结
Mar 10 Javascript
wepy--用vantUI 实现上弹列表并选择相应的值操作
Nov 03 Javascript
在Vue中使用icon 字体图标的方法
Jun 14 #Javascript
移动端底部导航固定配合vue-router实现组件切换功能
Jun 13 #Javascript
后台使用freeMarker和前端使用vue的方法及遇到的问题
Jun 13 #Javascript
vue路由插件之vue-route
Jun 13 #Javascript
在JavaScript中使用严格模式(Strict Mode)
Jun 13 #Javascript
详解vuex之store源码简单解析
Jun 13 #Javascript
vue store之状态管理模式的详细介绍
Jun 13 #Javascript
You might like
PHP 命令行工具 shell_exec, exec, passthru, system详细使用介绍
2011/09/11 PHP
php使HTML标签自动补全闭合函数代码
2012/10/04 PHP
使用Smarty 获取当前日期时间和格式化日期时间的方法详解
2013/06/18 PHP
PHP实现数据库的增删查改功能及完整代码
2018/04/18 PHP
YII2框架中添加自定义模块的方法实例分析
2020/03/18 PHP
JavaScript页面刷新与弹出窗口问题的解决方法
2010/03/02 Javascript
js parentElement和offsetParent之间的区别
2010/03/23 Javascript
50个比较实用jQuery代码段
2011/09/18 Javascript
Ext GridPanel加载完数据后进行操作示例代码
2014/06/17 Javascript
将html页面保存成图片,图片写入pdf的实现方法(推荐)
2016/09/17 Javascript
JavaScript中数组Array方法详解
2017/02/27 Javascript
JS实现线性表的顺序表示方法示例【经典数据结构】
2017/04/11 Javascript
微信小程序实战之自定义toast(6)
2017/04/18 Javascript
JS实现多级菜单中当前菜单不随页面跳转样式而发生变化
2017/05/30 Javascript
JavaScript常用数学函数用法示例
2018/05/14 Javascript
纯JS实现可用于页码更换的飞页特效示例
2018/05/21 Javascript
webpack 样式加载的实现原理
2018/06/12 Javascript
JS浮点数运算结果不精确的Bug解决
2019/08/01 Javascript
小程序api实现promise封装过程解析
2019/11/21 Javascript
python基于pygame实现响应游戏中事件的方法(附源码)
2015/11/11 Python
举例讲解Python面向对象编程中类的继承
2016/06/17 Python
caffe binaryproto 与 npy相互转换的实例讲解
2018/07/09 Python
Python实现基于KNN算法的笔迹识别功能详解
2018/07/09 Python
python 除法保留两位小数点的方法
2018/07/16 Python
Python 多线程不加锁分块读取文件的方法
2018/12/11 Python
TensorFlow keras卷积神经网络 添加L2正则化方式
2020/05/22 Python
matplotlib 范围选区(SpanSelector)的使用
2021/02/24 Python
HTML5 Blob对象的具体使用
2020/05/22 HTML / CSS
Gretna Green中文官网:苏格兰格林小镇
2019/10/16 全球购物
Python面试题集
2012/03/08 面试题
校园之声广播稿
2014/01/31 职场文书
《理想的风筝》教学反思
2014/04/11 职场文书
酒桌上的祝酒词
2015/08/12 职场文书
使用 Apache 反向代理的设置技巧
2022/01/18 Servers
golang三种设计模式之简单工厂、方法工厂和抽象工厂
2022/04/10 Golang
基于Android10渲染Surface的创建过程
2022/08/14 Java/Android