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 相关文章推荐
AutoSave/自动存储功能实现
Mar 24 Javascript
Javascript快速排序算法详解
Dec 03 Javascript
JQuery选中checkbox方法代码实例(全选、反选、全不选)
Apr 27 Javascript
javascript编程异常处理实例小结
Nov 30 Javascript
浅析JavaScript作用域链、执行上下文与闭包
Feb 01 Javascript
JQuery的Pager分页器实现代码
May 03 Javascript
JS函数的定义与调用方法推荐
May 12 Javascript
利用prop-types第三方库对组件的props中的变量进行类型检测
May 02 Javascript
图片懒加载imgLazyLoading.js使用详解
Sep 15 Javascript
在小程序Canvas中使用measureText的方法示例
Oct 19 Javascript
JS把字符串格式的时间转换成几秒前、几分钟前、几小时前、几天前等格式
Jul 10 Javascript
在Vue 中获取下拉框的文本及选项值操作
Aug 13 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
第十节--抽象方法和抽象类
2006/11/16 PHP
PHP版自动生成文章摘要
2008/07/23 PHP
PHP浮点数精度问题汇总
2015/05/13 PHP
PHP与服务器文件系统的简单交互
2016/10/21 PHP
PHP iconv()函数字符编码转换的问题讲解
2019/03/22 PHP
比较详细的关于javascript 解析json的代码
2009/12/16 Javascript
javascript 用原型继承来实现对象系统
2010/03/22 Javascript
javascript自动改变文字大小和颜色的效果的小例子
2013/08/02 Javascript
js+div实现图片滚动效果代码
2014/02/10 Javascript
JS实现兼容性好,带缓冲的动感网页右键菜单效果
2015/09/18 Javascript
Javascript HTML5 Canvas实现的一个画板
2020/04/12 Javascript
全面理解JavaScript中的闭包
2016/05/12 Javascript
JavaScript中原型链存在的问题解析
2016/09/25 Javascript
Bootstrap作品展示站点实战项目2
2016/10/14 Javascript
JavaScript构建自己的对象示例
2016/11/29 Javascript
JS中事件冒泡和事件捕获介绍
2016/12/13 Javascript
初识NodeJS服务端开发入门(Express+MySQL)
2017/04/07 NodeJs
微信小程序封装http访问网络库实例代码
2017/05/24 Javascript
关于JS与jQuery中的文档加载问题
2017/08/22 jQuery
Angular实现双向折叠列表组件的示例代码
2017/11/21 Javascript
vue给input file绑定函数获取当前上传的对象完美实现方法
2017/12/15 Javascript
vue debug 二种方法
2018/09/16 Javascript
原生JS实现旋转轮播图+文字内容切换效果【附源码】
2018/09/29 Javascript
element-ui带输入建议的input框踩坑(输入建议空白以及会闪出上一次的输入建议问题)
2019/01/15 Javascript
解决微信小程序scroll-view组件无横向滚动的问题
2020/02/04 Javascript
探寻python多线程ctrl+c退出问题解决方案
2014/10/23 Python
Python实现大文件排序的方法
2015/07/10 Python
Python解决N阶台阶走法问题的方法分析
2017/12/28 Python
Python Cookie 读取和保存方法
2018/12/28 Python
Pandas+Matplotlib 箱式图异常值分析示例
2019/12/09 Python
Python利用Faiss库实现ANN近邻搜索的方法详解
2020/08/03 Python
HTML5 video 视频标签使用介绍
2014/02/03 HTML / CSS
技校毕业生个人学习的自我评价
2014/02/21 职场文书
企业党的群众路线教育实践活动学习心得体会
2014/10/31 职场文书
2019奶茶店创业计划书范本,值得你借鉴
2019/08/14 职场文书
python 多态 协议 鸭子类型详解
2021/11/27 Python