vue keep-alive请求数据的方法示例


Posted in Javascript onMay 16, 2018

背景

index页面:首页品牌入口

list页面:商品列表页面

product页面:商品详情页面

从index页面进入list的时候要刷新页面,从product页面返回list的时候不需要刷新页面,所以list使用了keep-alive的属性,keepAlive设置为true,但是开发过程中发现一个问题,从product返回到list的时候,列表页面不是正确的品牌列表,而是之前一次点击的品牌列表。由于每个人遇到关于keep-alive请求数据不正确的问题不同,这里就直接说我的解决办法。希望能给大家一个思路。

解决办法

很多人都会通过修改keepAlive来改变keep-alive,我尝试后还是不行,就换了个思路

钩子函数的执行顺序

不使用keep-alive

beforeRouteEnter --> created --> mounted --> destroyed

使用keep-alive

beforeRouteEnter --> created --> mounted --> activated --> deactivated

先扫盲,多少人和我都不知道上面的知识,在keep-alive的页面中,可以在 activated获取this.$route.params的参数

避开了设置keepAlive导致product返回的时候数据不对,当页面进入list的时候都是缓存状态,然后再通过是不是由index进入来判断是否执行activated里的函数,

list.vue 

beforeRouteEnter(to, from, next) {
   //判断从index页面进入,将list的isBack设置为true
   //这样就可以请求数据了
     if (from.name == 'index') {
      to.meta.isBack = true;
     }
     next();
   },
   activated: function () {
     if (this.$route.meta.isBack || this.isFirstEnter) {
      //清理已有商品列表的数据,重新请求数据,如果不清除的话就会有之前的商品缓存,延迟显示最新的商品
      this.proData = [];
      //请求数据
      this.fetchData();
     }
     //重新设置当前路由的isBack
     this.$route.meta.isBack = false;
     //重新设置是否第一次进入
     this.isFirstEnter = false;
   },
   mounted: function () {
    //如果是第一次进入,或者刷新操作的话,也请求数据
     this.isFirstEnter = true;
   },

router.js

const appRouter = {
 mode: "history",
 base: "/m/",
 routes: [
  {
   path: "",
   redirect: "/index"
  },
  {
   path: "/index",
   name: "index",
   component: Index,
   meta: {
    keepAlive: true
   }
  },
    {
   path: "/list",
   name: "list",
   component: List,
   meta: {
    keepAlive: true,
    isBack: false //isback是true的时候请求数据,或者第一次进入的时候请求数据
   }
  },
  {
   path: "/product/:id",
   name: "product",
   component: Product,
   meta: {
    keepAlive: false
   }
  }
  
 ]
};

Vue.use(Router);
export default new Router(appRouter);

不知道有咩有帮大家理清思路,有问题可以留言,以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
非常不错的一个javascript 类
Nov 07 Javascript
javascript 表单验证常见正则
Sep 28 Javascript
JS写的贪吃蛇游戏(个人练习)
Jul 08 Javascript
谈一谈jQuery核心架构设计
Mar 28 Javascript
js点击返回跳转到指定页面实现过程
Aug 20 Javascript
jQuery给指定的table动态添加删除行的操作方法
Oct 12 Javascript
浅谈JavaScript的innerWidth与innerHeight
Oct 12 Javascript
详解webpack中的hash、chunkhash、contenthash区别
Jan 05 Javascript
vue插槽slot的理解和使用方法
Apr 03 Javascript
详解一次Vue低版本安卓白屏问题的解决过程
May 30 Javascript
基于ssm框架实现layui分页效果
Jul 27 Javascript
CocosCreator如何实现划过的位置显示纹理
Apr 14 Javascript
解决vue项目中type=”file“ change事件只执行一次的问题
May 16 #Javascript
vue-cli与webpack处理静态资源的方法及webpack打包的坑
May 15 #Javascript
JavaScript常用截取字符串的三种方式用法区别实例解析
May 15 #Javascript
vue中keep-alive的用法及问题描述
May 15 #Javascript
react中使用swiper的具体方法
May 15 #Javascript
vue addRoutes实现动态权限路由菜单的示例
May 15 #Javascript
浅谈AngularJS中$http服务的简单用法
May 15 #Javascript
You might like
php实现留言板功能
2017/03/05 PHP
php及codeigniter使用session-cookie的方法(详解)
2017/04/06 PHP
Windows上php5.6操作mongodb数据库示例【配置、连接、获取实例】
2019/02/13 PHP
PHP使用Http Post请求发送Json对象数据代码解析
2020/07/16 PHP
jQuery Flash/MP3/Video多媒体插件
2010/01/18 Javascript
在Windows上安装Node.js模块的方法
2011/09/25 Javascript
VBS通过WMI监视注册表变动的代码
2011/10/27 Javascript
功能强大的Bootstrap效果展示(二)
2016/08/03 Javascript
在JSP中如何实现MD5加密的方法
2016/11/02 Javascript
Bootstrap面板使用方法
2017/01/16 Javascript
Vue.use源码分析
2017/04/22 Javascript
Bootstrap table使用方法汇总
2017/11/17 Javascript
webpack引入eslint配置详解
2018/01/22 Javascript
详解angular部署到iis出现404解决方案
2018/08/14 Javascript
详解ES6 系列之异步处理实战
2018/10/26 Javascript
基于layui的table插件进行复选框联动功能的实现方法
2019/09/19 Javascript
JS数据类型分类及常用判断方法
2020/11/19 Javascript
浅析Python中的多重继承
2015/04/28 Python
Python的Django框架中消息通知的计数器实现教程
2016/06/13 Python
Python基于pycrypto实现的AES加密和解密算法示例
2018/04/10 Python
python验证身份证信息实例代码
2019/05/06 Python
python自动发邮件总结及实例说明【推荐】
2019/05/31 Python
Python+opencv 实现图片文字的分割的方法示例
2019/07/04 Python
python读取ini配置文件过程示范
2019/12/23 Python
python3爬取torrent种子链接实例
2020/01/16 Python
python中count函数简单的实例讲解
2020/02/06 Python
Python 实现Image和Ndarray互相转换
2020/02/19 Python
解决pymysql cursor.fetchall() 获取不到数据的问题
2020/05/15 Python
基于python图书馆管理系统设计实例详解
2020/08/05 Python
CSS3 边框效果
2019/11/04 HTML / CSS
《玩具柜台前的孩子》教学反思
2014/02/13 职场文书
求职信结尾怎么写
2014/05/26 职场文书
总经理助理岗位职责
2015/01/31 职场文书
防溺水主题班会教案
2015/08/12 职场文书
SQL Server中使用判断语句(IF ELSE/CASE WHEN )案例
2021/07/07 SQL Server
关于JavaScript轮播图的实现
2021/11/20 Javascript