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实现的UBB编码函数
Mar 09 Javascript
jQuery 设置 CSS 属性示例介绍
Jan 16 Javascript
node.js中的http.response.removeHeader方法使用说明
Dec 14 Javascript
JQuery中ajax方法访问web服务实例
Jul 18 Javascript
探究Vue.js 2.0新增的虚拟DOM
Oct 20 Javascript
浅谈jQuery操作类数组的工具方法
Dec 23 Javascript
JavaScript实现简单图片轮播效果
Aug 21 Javascript
浅谈Vue.nextTick 的实现方法
Oct 25 Javascript
mpvue实现微信小程序快递单号查询代码
Apr 03 Javascript
js String.prototype.trim字符去前后空格的扩展
Aug 23 Javascript
基于element-ui封装可搜索的懒加载tree组件的实现
May 22 Javascript
JS+JQuery实现无缝连接轮播图
Dec 30 jQuery
在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连接mysql数据库代码
2009/03/10 PHP
一个PHP的String类代码
2010/04/20 PHP
php判断电脑访问、手机访问的例子
2014/05/10 PHP
PHP中$this和$that指针使用实例
2015/01/06 PHP
WordPress迁移时一些常见问题的解决方法整理
2015/11/24 PHP
jquery中常用的SET和GET
2009/01/13 Javascript
js控制不同的时间段显示不同的css样式的实例代码
2013/11/04 Javascript
jquery使用append(content)方法注意事项分享
2014/01/06 Javascript
js中小数转换整数的方法
2014/01/26 Javascript
兼容各大浏览器的JavaScript阻止事件冒泡代码
2015/07/09 Javascript
js中的内部属性与delete操作符介绍
2015/08/10 Javascript
轻松实现Bootstrap图片轮播
2020/04/20 Javascript
AngularJs bootstrap搭载前台框架——js控制部分
2016/09/01 Javascript
AngularJS 霸道的过滤器小结
2017/04/26 Javascript
在vue-cli中组件通信的方法
2017/12/16 Javascript
js原生方法被覆盖,从新赋值原生的方法
2018/01/02 Javascript
JavaScript实现删除数组重复元素的5种常用高效算法总结
2018/01/18 Javascript
JS处理一些简单计算题
2018/02/24 Javascript
详解如何为你的angular app构建一个第三方库
2018/12/07 Javascript
vue实现手机端省市区区域选择
2019/09/27 Javascript
JavaScript 实现HTML DOM增删改查操作的常见方法详解
2020/01/04 Javascript
解决vue请求接口第一次成功,第二次失败问题
2020/09/08 Javascript
[01:36]极致酷炫!TI9典藏宝瓶+撼地者至宝展示
2019/06/11 DOTA
Python实现字典的遍历与排序功能示例
2017/12/23 Python
Python中staticmethod和classmethod的作用与区别
2018/10/11 Python
使用Python 正则匹配两个特定字符之间的字符方法
2018/12/24 Python
python通过配置文件共享全局变量的实例
2019/01/11 Python
python多线程semaphore实现线程数控制的示例
2020/08/10 Python
Python析构函数__del__定义原理解析
2020/11/20 Python
Sixt美国租车:高端豪华车型自驾体验
2017/09/02 全球购物
水污染治理专业毕业生推荐信
2013/11/14 职场文书
2014保险公司内勤工作总结
2014/12/16 职场文书
基督教追悼会答谢词
2015/09/29 职场文书
2019商业计划书格式、范文
2019/04/24 职场文书
优胜劣汰,强者为王——读《鲁滨逊漂流记》有感
2019/08/15 职场文书
python spilt()分隔字符串的实现示例
2021/05/21 Python