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 相关文章推荐
做网页的一些技巧(续)
Feb 01 Javascript
跨浏览器通用、可重用的选项卡tab切换js代码
Sep 20 Javascript
Extjs NumberField后面加单位实现思路
Jul 30 Javascript
javascript静态页面传值的三种方法分享
Nov 12 Javascript
关于页面嵌入swf覆盖div层的问题的解决方法
Feb 11 Javascript
JS正则替换掉小括号及内容的方法
Nov 29 Javascript
JQueryEasyUI框架下的combobox的取值和绑定的方法
Jan 22 Javascript
jQuery html表格排序插件tablesorter使用方法详解
Feb 10 Javascript
jQuery插件FusionCharts绘制2D柱状图和折线图的组合图效果示例【附demo源码】
Apr 10 jQuery
浅谈如何优雅处理JavaScript异步错误
Nov 12 Javascript
Vue项目打包、合并及压缩优化网页响应速度
Jul 07 Vue.js
5种方法告诉你如何使JavaScript 代码库更干净
Sep 15 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生成带有雪花背景的验证码
2006/10/09 PHP
phpcms模块开发之swfupload的使用介绍
2013/04/28 PHP
php 模拟post_验证页面的返回状态(实例讲解)
2013/10/28 PHP
通过curl模拟post和get方式提交的表单类
2014/04/23 PHP
是 WordPress 让 PHP 更流行了 而不是框架
2016/02/03 PHP
PHP 用session与gd库实现简单验证码生成与验证的类方法
2016/11/15 PHP
thinkphp整合微信支付代码分享
2016/11/24 PHP
PHP PDOStatement::errorCode讲解
2019/01/31 PHP
许愿墙中用到的函数
2006/10/07 Javascript
jQuery Study Notes学习笔记 (二)
2010/08/04 Javascript
js 实现 input type=&quot;file&quot; 文件上传示例代码
2013/08/07 Javascript
异步动态加载JS并运行(示例代码)
2013/12/13 Javascript
JavaScript操作DOM元素的childNodes和children区别
2015/04/01 Javascript
JS实现灵巧的下拉导航效果代码
2015/08/25 Javascript
javascript自动恢复文本框点击清除后的默认文本
2016/01/12 Javascript
AngularJs expression详解及简单示例
2016/09/01 Javascript
jQuery事件对象总结
2016/10/17 Javascript
JavaScript表单验证开发
2016/11/23 Javascript
浅谈$_FILES数组为空的原因
2017/02/16 Javascript
React Js 微信禁止复制链接分享禁止隐藏右上角菜单功能
2017/05/26 Javascript
微信小程序实现点击文字页面跳转功能【附源码下载】
2017/12/12 Javascript
微信小程序使用request网络请求操作实例
2017/12/15 Javascript
JS实现的简单下拉框联动功能示例
2018/05/11 Javascript
解决layui 三级联动下拉框更新时回显的问题
2019/09/03 Javascript
python实现将html表格转换成CSV文件的方法
2015/06/28 Python
python如何使用正则表达式的前向、后向搜索及前向搜索否定模式详解
2017/11/08 Python
python3.5 email实现发送邮件功能
2018/05/22 Python
python中的单引号双引号区别知识点总结
2019/06/23 Python
Python下划线5种含义代码实例解析
2020/07/10 Python
Django Form常用功能及代码示例
2020/10/13 Python
环境工程毕业生自荐信
2013/11/17 职场文书
高等教育学专业自荐书
2014/06/17 职场文书
工程造价专业求职信
2014/07/17 职场文书
地方白酒代理协议书
2014/10/25 职场文书
企业群众路线教育实践活动心得体会
2014/11/03 职场文书
Python学习之os包使用教程详解
2022/03/21 Python