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 相关文章推荐
使两个iframe的高度与内容自适应,且相等
Nov 20 Javascript
利用location.hash实现跨域iframe自适应
May 04 Javascript
jquery 如何动态添加、删除class样式方法介绍
Nov 07 Javascript
javascript 闭包详解
Feb 15 Javascript
js点击按钮实现带遮罩层的弹出视频效果
Dec 19 Javascript
Bootstrap轮播图的使用和理解4
Dec 14 Javascript
详解Webpack+Babel+React开发环境的搭建的方法步骤
Jan 09 Javascript
JavaScript实现短暂提示框功能
Apr 04 Javascript
vue中子组件传递数据给父组件的讲解
Jan 27 Javascript
详解javascript中的Error对象
Apr 25 Javascript
vue实现菜单切换功能
May 08 Javascript
Vue通过getAction的finally来最大程度避免影响主数据呈现问题
Apr 24 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
destoon实现不同会员组公司名称显示不同的颜色的方法
2014/08/22 PHP
全面解析PHP操作Memcache基本函数
2016/07/14 PHP
Windows平台PHP+IECapt实现网页批量截图并创建缩略图功能详解
2019/08/02 PHP
不使用jquery实现js打字效果示例分享
2014/01/19 Javascript
javascript十六进制及二进制转化的方法
2015/05/06 Javascript
解决JS请求服务器gbk文件乱码的问题
2015/10/16 Javascript
深入理解Ajax的get和post请求
2016/06/02 Javascript
微信小程序 五星评分的实现实例
2017/08/04 Javascript
利用JS做网页特效_大图轮播(实例讲解)
2017/08/09 Javascript
bootstrap-table组合表头的实现方法
2017/09/07 Javascript
jQueryMobile之窗体长内容的缺陷与解决方法实例分析
2017/09/20 jQuery
JavaScript的setter与getter方法
2017/11/29 Javascript
webpack多入口文件页面打包配置详解
2018/01/09 Javascript
解决vue的 v-for 循环中图片加载路径问题
2018/09/03 Javascript
浅谈webpack性能榨汁机(打包速度优化)
2019/01/09 Javascript
布同自制Python函数帮助查询小工具
2011/03/13 Python
用pywin32实现windows模拟鼠标及键盘动作
2014/04/22 Python
Win8.1下安装Python3.6提示0x80240017错误的解决方法
2018/07/31 Python
Windows下将Python文件打包成.EXE可执行文件的方法
2018/08/03 Python
python中tkinter的应用:修改字体的实例讲解
2019/07/17 Python
pandas实现DataFrame显示最大行列,不省略显示实例
2019/12/26 Python
django商品分类及商品数据建模实例详解
2020/01/03 Python
python正则过滤字母、中文、数字及特殊字符方法详解
2020/02/11 Python
Tensorflow中的图(tf.Graph)和会话(tf.Session)的实现
2020/04/22 Python
使用phonegap查找联系人的实现方法
2017/03/31 HTML / CSS
详解通过focusout事件解决IOS键盘收起时界面不归位的问题
2019/07/18 HTML / CSS
如何向接受结构参数的函数传入常数值
2016/02/17 面试题
Linux管理员面试题 Linux admin interview questions
2014/11/01 面试题
食品厂厂长岗位职责
2014/01/30 职场文书
海飞丝的广告词
2014/03/20 职场文书
爱岗敬业演讲稿
2014/05/05 职场文书
挂牌仪式策划方案
2014/05/18 职场文书
2016大学生社会实践单位评语
2015/12/01 职场文书
Python基础之赋值,浅拷贝,深拷贝的区别
2021/04/30 Python
Pytorch 实现变量类型转换
2021/05/17 Python
python实现简单的三子棋游戏
2022/04/28 Python