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 相关文章推荐
javascript 同时在IE和FireFox获取KeyCode的代码
Feb 07 Javascript
jquery struts 验证唯一标识(公用方法)
Mar 27 Javascript
jQuery获得内容和属性方法及示例
Dec 02 Javascript
js使用ajax读博客rss示例
May 06 Javascript
关于Javascript加载执行优化的研究报告
Dec 16 Javascript
完美兼容多浏览器的js判断图片路径代码汇总
Apr 17 Javascript
轮播图组件js代码
Aug 08 Javascript
解决js ajax同步请求造成浏览器假死的问题
Jan 18 Javascript
详解如何为你的angular app构建一个第三方库
Dec 07 Javascript
js实现弹出框的拖拽效果实例代码详解
Apr 16 Javascript
vue 使用外部JS与调用原生API操作示例
Dec 02 Javascript
vue-cli4.5.x快速搭建项目
May 30 Vue.js
在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 gd2 上传图片/文字水印/图片水印/等比例缩略图/实现代码
2010/05/15 PHP
PHP验证码函数代码(简单实用)
2013/09/29 PHP
教你如何快捷的使用cmd访问mysql小技巧
2014/05/26 PHP
PHP处理大量表单字段的便捷方法
2015/02/07 PHP
jquery实现多行文字图片滚动效果示例代码
2014/10/10 Javascript
JavaScript中toString()方法的使用详解
2015/06/05 Javascript
JavaScript中String.match()方法的使用详解
2015/06/06 Javascript
简介JavaScript中strike()方法的使用
2015/06/08 Javascript
利用jQuery中的ajax分页实现代码
2016/02/25 Javascript
js控制div层的叠加简单方法
2016/10/15 Javascript
javascript 显示全局变量与隐式全局变量的区别
2017/02/09 Javascript
JS检测window.open打开的窗口是否关闭
2017/06/25 Javascript
Nodejs之TCP服务端与客户端聊天程序详解
2017/07/07 NodeJs
Angularjs实现上传图片预览功能
2017/09/01 Javascript
JS监控关闭浏览器操作的实例详解
2017/09/12 Javascript
微信小程序实现的绘制table表格功能示例
2019/04/26 Javascript
浅谈layui 数据表格前后台传值的问题
2019/09/12 Javascript
js数组相减简单示例【删除a数组所有与b数组相同元素】
2020/03/04 Javascript
python列出目录下指定文件与子目录的方法
2015/07/03 Python
Python中对象迭代与反迭代的技巧总结
2016/09/17 Python
python 字典中取值的两种方法小结
2018/08/02 Python
python机器学习之神经网络实现
2018/10/13 Python
实例介绍Python中整型
2019/02/11 Python
浅谈python常用程序算法
2019/03/22 Python
pandas DataFrame创建方法的方式
2019/08/02 Python
Python-openpyxl表格读取写入的案例详解
2020/11/02 Python
CSS3实现滚动条动画效果代码分享
2016/08/03 HTML / CSS
在DELPHI中调用存储过程和使用内嵌SQL哪种方式更好
2016/11/22 面试题
师说教学反思
2014/02/07 职场文书
网络研修随笔感言
2014/02/17 职场文书
《陋室铭》教学反思
2014/02/26 职场文书
安全施工标语
2014/06/07 职场文书
应届大专生自荐书
2014/06/16 职场文书
就业意向协议书
2015/01/29 职场文书
个性发展自我评价2015
2015/03/09 职场文书
演讲开场白和结束语
2015/05/29 职场文书