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 写类方式之四
Jul 05 Javascript
JS模拟自动点击的简单实例
Aug 08 Javascript
常用jQuery代码分享
Jul 14 Javascript
关于JS中match() 和 exec() 返回值和属性的测试
Mar 21 Javascript
jquery 点击元素后,滚动条滚动至该元素位置的方法
Aug 05 Javascript
创建一般js对象的几种方式
Jan 19 Javascript
详解JavaScript中js对象与JSON格式字符串的相互转换
Feb 14 Javascript
vue.js组件vue-waterfall-easy实现瀑布流效果
Aug 22 Javascript
jquery写出PC端轮播图实例
Jan 26 jQuery
vue2.0 实现导航守卫(路由守卫)
May 21 Javascript
vue实现手机端省市区区域选择
Sep 27 Javascript
Vue +WebSocket + WaveSurferJS 实现H5聊天对话交互的实例
Nov 18 Vue.js
解决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基于cookie与session统计网站访问量并输出显示的方法
2016/01/15 PHP
laravel-admin表单提交隐藏一些数据,回调时获取数据的方法
2019/10/08 PHP
formvalidator验证插件中有关ajax验证问题
2013/01/04 Javascript
纯js分页代码(简洁实用)
2013/11/05 Javascript
Json实现异步请求提交评论无需跳转其他页面
2014/10/11 Javascript
对比分析AngularJS中的$http.post与jQuery.post的区别
2015/02/27 Javascript
JavaScript判断是否为数组的3种方法及效率比较
2015/04/01 Javascript
Bootstrap3 多选和单选框(checkbox)
2016/12/29 Javascript
基于JavaScript实现焦点图轮播效果
2017/03/27 Javascript
详解ES6中的代理模式——Proxy
2018/01/08 Javascript
vue 全选与反选的实现方法(无Bug 新手看过来)
2018/02/09 Javascript
AngularJS实现与后台服务器进行交互的示例讲解
2018/08/13 Javascript
微信运维交互机器人的示例代码
2018/11/12 Javascript
Nuxt.js之自动路由原理的实现方法
2018/11/21 Javascript
echarts统计x轴区间的数值实例代码详解
2019/07/07 Javascript
layui table 列宽百分比显示的实现方法
2019/09/28 Javascript
vue指令v-html使用过滤器filters功能实例
2019/10/25 Javascript
vue实现浏览器全屏展示功能
2019/11/27 Javascript
React中使用UMEditor的方法示例
2019/12/27 Javascript
Python实现matplotlib显示中文的方法详解
2018/02/06 Python
python xpath获取页面注释的方法
2019/01/14 Python
Python3利用Dlib实现摄像头实时人脸检测和平铺显示示例
2019/02/21 Python
pytorch 在网络中添加可训练参数,修改预训练权重文件的方法
2019/08/17 Python
python爬虫 批量下载zabbix文档代码实例
2019/08/21 Python
Django Haystack 全文检索与关键词高亮的实现
2020/02/17 Python
美国最受欢迎的童装品牌之一:The Children’s Place
2016/07/23 全球购物
Backcountry旗下的户外商品闪购网站:steep&cheap
2016/09/22 全球购物
花店创业计划书范文
2014/02/07 职场文书
行政助理工作职责范本
2014/03/04 职场文书
中学优秀班主任事迹材料
2014/05/01 职场文书
小学校长先进事迹材料
2014/05/13 职场文书
二年级语文上册复习计划
2015/01/19 职场文书
导游词之广东佛山(南风古灶)
2019/09/24 职场文书
nginx常用命令放入shell脚本详解
2021/03/31 Servers
Vue详细的入门笔记
2021/05/10 Vue.js
Win11应用商店打开闪退怎么解决? win11应用商店打不开的多种解决办法
2022/04/05 数码科技