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 相关文章推荐
jquery ready函数源代码研究
Dec 06 Javascript
超级酷和最实用的jQuery实例收集(20个)
Apr 21 Javascript
jQuery 取值、赋值的基本方法整理
Mar 31 Javascript
Ext4.2的Ext.grid.plugin.RowExpander无法触发事件解决办法
Aug 15 Javascript
jQuery在ul中显示某个li索引号的方法
Mar 17 Javascript
js实现仿MSN带关闭功能的右下角弹窗代码
Sep 04 Javascript
仅30行代码实现Javascript中的MVC
Feb 15 Javascript
JS JSOP跨域请求实例详解
Jul 04 Javascript
js如何编写简单的ajax方法库
Aug 02 Javascript
浅谈Express异步进化史
Sep 09 Javascript
使用Node.js实现ORM的一种思路详解(图文)
Oct 24 Javascript
js设置默认时间跨度过程详解
Jul 17 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
星际争霸 Starcraft 编年史
2020/03/14 星际争霸
php debug 安装技巧
2011/04/30 PHP
编写PHP脚本使WordPress的主题支持Widget侧边栏
2015/12/14 PHP
js类中获取外部函数名的方法与代码
2007/09/12 Javascript
北京奥运官方网站幻灯切换效果flash版打包下载
2008/01/30 Javascript
在网页中使用document.write时遭遇的奇怪问题
2010/08/24 Javascript
jquery live()重复绑定的解决方法介绍
2014/01/03 Javascript
AngularJS基础 ng-mousemove 指令简单示例
2016/08/02 Javascript
浅谈jquery中使用canvas的问题
2016/10/10 Javascript
ng2学习笔记之bootstrap中的component使用教程
2017/03/09 Javascript
JS中去掉array中重复元素的方法
2017/05/26 Javascript
使用jQuery实现页面定时弹出广告效果
2017/08/24 jQuery
浅谈React中组件间抽象
2018/01/27 Javascript
使用JS判断页面是首次被加载还是刷新
2019/05/26 Javascript
vue 判断两个时间插件结束时间必选大于开始时间的代码
2020/11/04 Javascript
在Heroku云平台上部署Python的Django框架的教程
2015/04/20 Python
python检查字符串是否是正确ISBN的方法
2015/07/11 Python
Python入门_浅谈逻辑判断与运算符
2017/05/16 Python
pandas 读取各种格式文件的方法
2018/06/22 Python
pandas使用get_dummies进行one-hot编码的方法
2018/07/10 Python
Python使用pickle模块储存对象操作示例
2018/08/15 Python
Python实现八皇后问题示例代码
2018/12/09 Python
Python OrderedDict的使用案例解析
2019/10/25 Python
python安装和pycharm环境搭建设置方法
2020/05/27 Python
localStorage、sessionStorage使用总结
2017/11/17 HTML / CSS
Nili Lotan官网:Nili Lotan同名品牌
2018/01/07 全球购物
BIBLOO波兰:捷克的一家在线服装店
2018/03/09 全球购物
Hanro官网:奢华男士和女士内衣、睡衣和家居服
2018/10/25 全球购物
小区门卫工作职责
2013/12/14 职场文书
运动会表扬稿大全
2014/01/16 职场文书
教师年度考核评语
2014/04/28 职场文书
建筑安全责任书范本
2014/07/24 职场文书
python实现简单区块链结构
2021/04/25 Python
python-for x in range的用法(注意要点、细节)
2021/05/10 Python
Spring Data JPA框架持久化存储数据到数据库
2022/04/28 Java/Android
MySql如何将查询的出来的字段进行转换
2022/06/14 MySQL