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 相关文章推荐
JavaScript 字符串处理函数使用小结
Dec 02 Javascript
JavaScript 基础篇之运算符、语句(二)
Apr 07 Javascript
再谈JavaScript线程
Jul 10 Javascript
利用jQuery实现CheckBox全选/全不选/反选的简单代码
May 31 Javascript
简单模拟node.js中require的加载机制
Oct 27 Javascript
微信小程序中单位rpx和rem的使用
Dec 06 Javascript
深入解析Vue 组件命名那些事
Jul 18 Javascript
详解在express站点中使用ejs模板引擎
Sep 21 Javascript
Vue集成Iframe页面的方法示例
Dec 12 Javascript
AngularJS 前台分页实现的示例代码
Jun 07 Javascript
vue和webpack项目构建过程常用的npm命令详解
Jun 15 Javascript
Vue使用screenfull实现全屏效果
Sep 17 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代码
2011/11/27 PHP
PHP结合Ueditor并修改图片上传路径
2016/10/16 PHP
php连接mysql数据库
2017/03/21 PHP
SCP远程VPS快速搬家和WDCP升级php5.3安装memcached和eaccelerator教程
2017/07/27 PHP
表单(FORM)的一些实用效果代码
2007/03/25 Javascript
JavaScript高级程序设计(第3版)学习笔记12 js正则表达式
2012/10/11 Javascript
jquery中邮箱地址 URL网站地址正则验证实例代码
2013/09/15 Javascript
Extjs中RowExpander控件的默认展开问题示例探讨
2014/01/24 Javascript
三种动态加载js的jquery实例代码另附去除js方法
2014/04/30 Javascript
编写简单的jQuery提示插件
2014/12/21 Javascript
js实现图片和链接文字同步切换特效的方法
2015/02/20 Javascript
javascript+HTML5的canvas实现七夕情人节3D玫瑰花效果代码
2015/08/04 Javascript
详解Javascript继承的实现
2016/03/25 Javascript
jQuery 获取select选中值及清除选中状态
2016/12/13 Javascript
localStorage的黑科技-js和css缓存机制
2017/02/06 Javascript
vue+vuex+axios+echarts画一个动态更新的中国地图的方法
2017/12/19 Javascript
js实现点击展开隐藏效果(实例代码)
2018/09/28 Javascript
详解vuex持久化插件解决浏览器刷新数据消失问题
2019/04/15 Javascript
vue的三种图片引入方式代码实例
2019/11/19 Javascript
webpack打包html里面img后src为“[object Module]”问题
2019/12/22 Javascript
JS面向对象编程基础篇(二) 封装操作实例详解
2020/03/03 Javascript
[00:33]2016完美“圣”典风云人物:BurNIng宣传片
2016/12/10 DOTA
Python守护进程(daemon)代码实例
2015/03/06 Python
python实现简单点对点(p2p)聊天
2017/09/13 Python
Python正则表达式匹配日期与时间的方法
2019/07/07 Python
解决PDF 转图片时丢文字的一种可能方式
2021/03/04 Python
Data URI scheme详解和使用实例及图片base64编码实现方法
2014/05/08 HTML / CSS
Tiqets英国:智能手机上的文化和娱乐门票
2019/07/10 全球购物
英国领先的高级美容和在线皮肤诊所:Face the Future
2020/06/17 全球购物
人力资源专业推荐信
2013/11/29 职场文书
技术合作协议书范本
2014/04/18 职场文书
2014年职称评定工作总结
2014/11/26 职场文书
财政局个人总结
2015/03/04 职场文书
上甘岭观后感
2015/06/10 职场文书
Pytorch实现图像识别之数字识别(附详细注释)
2021/05/11 Python
解决Git推送错误non-fast-forward的方法
2022/06/25 Servers