vue2使用keep-alive缓存多层列表页的方法


Posted in Javascript onSeptember 21, 2018

vue关于列表页和详情页的展现比较让人头疼,在列表页面点击进详情页返回以后,列表页会重新刷新。假如在第五页找到的数据,点击修改后返回又跳回第一页了,这个时候就需要用到keep-alive缓存页面数据,但keep-alive缓存的页面一直不会发生改变,特别是列表页层级很多的情况下,更加复杂。

譬如我后台的一个管理页面,因为数据关联很复杂,所以做了三层列表页嵌套,上一层点击管理就可以进行下一层的数据展现,每一层列表页都包含了3到4个需要循环展现的数据。在加入keep-alive之前我使用路由和自定义组件的方式组织页面的。

路由到详情页,然后详情页加载列表页组件展现,然后在组件模块通过props:[‘id']获取数据

import Vmothod from '../page/ApiMethodTable.vue';
import VsystemParam from '../page/ApiSystemParamTable.vue';
import VsystemError from '../page/ApiSystemErrorTable.vue';
<template>
 <div>
  <Vmothod :id="id"></Vmothod>
  <VsystemParam :id="id"></VsystemParam>
  <VsystemError :id="id"></VsystemError>
 </div>
</template>

但是如此以来,在返回上一层或者修改数据回跳后,因为没有页面缓存,所以页数会变成第一页,使用上很不方便。

在网上找了相关解决方案后,我试着在路由上加入了keep-alive参数。

meta: { keepAlive: true }
<keep-alive>
  <router-view v-if="$route.meta.keepAlive"></router-view>
 </keep-alive>
 <router-view v-if="!$route.meta.keepAlive"></router-view>

这样解决了页面不缓存的问题,但跳转之后所有页面都是一模一样的数据,这就很不对了。后台发觉还要在页面初始化时加入钩子函数拉取数据

activated(){
  this.getData();
 }

但是发觉还是不行,上一页通过props:[‘id']传递到组件参数也会被缓存,如此以来props不能用了,只有通过在路由来传递参数。

在路由的时候带上id参数

path:'/method/:id'

然后在组件页面获取参数

self.$route.params.id

如此终于顺畅的缓存了详情页的当前页面参数。

以上这篇vue2使用keep-alive缓存多层列表页的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
Jquery获取复选框被选中值的简单方法
Jul 04 Javascript
JavaScript省市联动实现代码
Feb 15 Javascript
javascript的propertyIsEnumerable()方法使用介绍
Apr 09 Javascript
AngularJs  unit-testing(单元测试)详解
Sep 02 Javascript
完美解决input[type=number]无法显示非数字字符的问题
Feb 28 Javascript
vue脚手架vue-cli的学习使用教程
Jun 06 Javascript
jQueryMobile之窗体长内容的缺陷与解决方法实例分析
Sep 20 jQuery
获取layer.open弹出层的返回值方法
Aug 20 Javascript
Phaser.js实现简单的跑酷游戏附源码下载
Oct 26 Javascript
详解vue项目打包步骤
Mar 29 Javascript
基于axios 的responseType类型的设置方法
Oct 29 Javascript
JavaScript中reduce()的用法
May 11 Javascript
使用ng-packagr打包Angular的方法示例
Sep 21 #Javascript
基于vue中keep-alive缓存问题的解决方法
Sep 21 #Javascript
vue中前进刷新、后退缓存用户浏览数据和浏览位置的实例讲解
Sep 21 #Javascript
vue单页面应用打开新窗口显示跳转页面的实例
Sep 21 #Javascript
详解Vue改变数组中对象的属性不重新渲染View的解决方案
Sep 21 #Javascript
默认浏览器设置及vue自动打开页面的方法
Sep 21 #Javascript
详解Vue中数组和对象更改后视图不刷新的问题
Sep 21 #Javascript
You might like
设置php页面编码的两种方法示例介绍
2014/03/03 PHP
php接口数据加密、解密、验证签名
2015/03/12 PHP
laravel如何开启跨域功能示例详解
2017/08/31 PHP
JavaScript的eval JSON object问题
2009/11/15 Javascript
javascript图片相似度算法实现 js实现直方图和向量算法
2014/01/14 Javascript
运用jQuery定时器的原理实现banner图片切换
2014/10/22 Javascript
javascript实现删除前弹出确认框
2015/06/04 Javascript
jQuery点击改变class并toggle及toggleClass()方法定义用法
2015/12/11 Javascript
AngularJs动态加载模块和依赖注入详解
2016/01/11 Javascript
ES6的新特性概览
2016/03/10 Javascript
基于Jquery插件实现跨域异步上传文件功能
2016/04/26 Javascript
JS中使用mailto实现将用户在网页中输入的内容传递到本地邮件客户端
2016/10/08 Javascript
angularjs使用gulp-uglify压缩后执行报错的解决方法
2018/03/07 Javascript
r.js来合并压缩css文件的示例
2018/04/26 Javascript
JavaScript中七种流行的开源机器学习框架
2018/10/11 Javascript
wxpython中Textctrl回车事件无效的解决方法
2016/07/21 Python
深入浅析python with语句简介
2018/04/11 Python
Python解析Excle文件中的数据方法
2018/10/23 Python
python仿抖音表白神器
2019/04/08 Python
使用pymysql查询数据库,把结果保存为列表并获取指定元素下标实例
2020/05/15 Python
python时间序列数据转为timestamp格式的方法
2020/08/03 Python
Python使用Pygame绘制时钟
2020/11/29 Python
用Python自动清理电脑内重复文件,只要10行代码(自动脚本)
2021/01/09 Python
Python3爬虫RedisDump的安装步骤
2021/02/20 Python
斯洛伐克家具和时尚装饰品购物网站:Butlers.sk
2019/09/08 全球购物
Gretna Green中文官网:苏格兰格林小镇
2019/10/16 全球购物
波兰汽车配件网上商店:iParts.pl
2020/09/08 全球购物
C语言编程练习
2012/04/02 面试题
《赵州桥》教学反思
2014/02/17 职场文书
春节请假条
2014/04/11 职场文书
交通安全横幅标语
2014/10/07 职场文书
培训通知书模板
2015/04/17 职场文书
从严治党主题教育活动总结
2015/05/07 职场文书
排球赛新闻稿
2015/07/17 职场文书
Python OpenCV超详细讲解基本功能
2022/04/02 Python
Elasticsearch Recovery 详细介绍
2022/04/19 Java/Android