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 09 Javascript
JS弹出对话框返回值代码(asp.net后台)
Dec 28 Javascript
Javascript 自适应高度的Tab选项卡
Apr 05 Javascript
javascript中的this详解
Dec 08 Javascript
jquery实现勾选复选框触发事件给input赋值
Feb 01 Javascript
jQuery实现控制文字内容溢出用省略号(…)表示的方法
Feb 26 Javascript
js鼠标按键事件和键盘按键事件用法实例汇总
Oct 03 Javascript
浅谈angular4 ng-content 中隐藏的内容
Aug 18 Javascript
基于Vue2的独立构建与运行时构建的差别(详解)
Dec 06 Javascript
vue中的inject学习教程
Apr 24 Javascript
解决vue scoped scss 无效的问题
Sep 04 Javascript
JavaScript函数柯里化
Nov 07 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 和 COM
2006/10/09 PHP
一个PHP模板,主要想体现一下思路
2006/12/25 PHP
PHP在线生成二维码(google api)的实现代码详解
2013/06/04 PHP
php调用新浪短链接API的方法
2014/11/08 PHP
php实现在服务器上创建目录的方法
2015/03/16 PHP
不错的一个日期输入 动态
2006/11/06 Javascript
JavaScript 异步调用框架 (Part 5 - 链式实现)
2009/08/04 Javascript
js,jquery滚动/跳转页面到指定位置的实现思路
2014/06/03 Javascript
js中document.write的那点事
2014/12/12 Javascript
AngularJS中实现用户访问的身份认证和表单验证功能
2016/04/21 Javascript
jQuery获取同级元素的简单代码
2016/07/09 Javascript
Javascript 制作图形验证码实例详解
2016/12/22 Javascript
js a标签点击事件
2017/03/30 Javascript
微信小程序request出现400的问题解决办法
2017/05/23 Javascript
jqgrid实现简单的单行编辑功能
2017/09/30 Javascript
微信小程序picker组件简单用法示例【附demo源码下载】
2017/12/05 Javascript
Vue项目中使用jquery的简单方法
2019/05/16 jQuery
Vue实现push数组并删除的例子
2019/11/01 Javascript
使用vue重构资讯页面的实例代码解析
2019/11/26 Javascript
vue实现简单计算商品价格
2020/09/14 Javascript
vue使用swiper实现左右滑动切换图片
2020/10/16 Javascript
Python实现去除代码前行号的方法
2015/03/10 Python
使用Python中的tkinter模块作图的方法
2017/02/07 Python
Python网络爬虫中的同步与异步示例详解
2018/02/03 Python
python小程序基于Jupyter实现天气查询的方法
2020/03/27 Python
python爬取网易云音乐热歌榜实例代码
2020/08/07 Python
纯css3实现走马灯效果
2014/12/26 HTML / CSS
HTML+CSS3模拟心的跳动实例代码
2017/09/05 HTML / CSS
详解利用canvas实现环形进度条的方法
2019/06/12 HTML / CSS
简单介绍HTML5中audio标签的使用
2015/09/24 HTML / CSS
园艺师求职信
2014/04/27 职场文书
小学见习报告
2014/10/31 职场文书
2014年宣传部个人工作总结
2014/12/06 职场文书
2015年公司后勤管理工作总结
2015/05/13 职场文书
2016基督教会圣诞节开幕词
2016/03/04 职场文书
win11无法添加打印机怎么办? 提示windows无法打开添加打印机的解决办法
2022/04/05 数码科技