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 相关文章推荐
浏览器解析js生成的html出现样式问题的解决方法
Apr 16 Javascript
JQuery slideshow的一个小问题(如何发现及解决过程)
Feb 06 Javascript
js 动态修改css文件用到了cssRule
Aug 20 Javascript
Javascript的setTimeout()使用闭包特性时需要注意的问题
Sep 23 Javascript
BootStrap tooltip提示框使用小结
Oct 26 Javascript
JS判断指定dom元素是否在屏幕内的方法实例
Jan 23 Javascript
vue的Virtual Dom实现snabbdom解密
May 03 Javascript
在vue-cli项目中使用bootstrap的方法示例
Apr 21 Javascript
vue2.0结合Element-ui实战案例
Mar 06 Javascript
JavaScript HTML DOM元素 节点操作汇总
Jul 29 Javascript
解决layer.confirm选择完之后消息框不消失的问题
Sep 16 Javascript
Vue axios 跨域请求无法带上cookie的解决
Sep 08 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处理文件的小例子(解压缩,删除目录)
2013/02/03 PHP
深入解析PHP垃圾回收机制对内存泄露的处理
2013/06/14 PHP
PHP扩展模块memcached长连接使用方法分析
2014/12/24 PHP
PHP的mysqli_select_db()函数讲解
2019/01/23 PHP
使用JavaScript库还是自己写代码?
2010/01/28 Javascript
jquery判断字符输入个数(数字英文长度记为1,中文记为2,超过长度自动截取)
2010/10/15 Javascript
js自动生成对象的属性示例代码
2013/10/28 Javascript
常见的原始JS选择器使用方法总结
2014/04/09 Javascript
js中使用replace方法完成某个字符的转换
2014/08/20 Javascript
javascript动态创建及删除元素的方法
2014/12/22 Javascript
JS实现的简单鼠标跟随DiV层效果完整实例
2015/10/31 Javascript
bootstrap-table组合表头的实现方法
2017/09/07 Javascript
vue实现键盘输入支付密码功能
2018/08/18 Javascript
vue-cli3项目展示本地Markdown文件的方法
2019/06/07 Javascript
JavaScript交换两个变量方法实例
2019/11/25 Javascript
springboot+vue+对接支付宝接口+二维码扫描支付功能(沙箱环境)
2020/10/15 Javascript
[54:10]完美世界DOTA2联赛PWL S2 Magma vs FTD 第二场 11.29
2020/12/03 DOTA
利用Python自带PIL库扩展图片大小给图片加文字描述的方法示例
2017/08/08 Python
numpy自动生成数组详解
2017/12/15 Python
解决Python 中英文混输格式对齐的问题
2018/07/16 Python
python实现字符串中字符分类及个数统计
2018/09/28 Python
Python实现的读取文件内容并写入其他文件操作示例
2019/04/09 Python
Python第三方库face_recognition在windows上的安装过程
2019/05/03 Python
Python3列表List入门知识附实例
2020/02/09 Python
利用python中的matplotlib打印混淆矩阵实例
2020/06/16 Python
python 带时区的日期格式化操作
2020/10/23 Python
CSS3 分类菜单效果
2019/05/27 HTML / CSS
全神贯注教学反思
2014/02/03 职场文书
我的长生果教学反思
2014/04/28 职场文书
难忘的一天教学反思
2014/04/30 职场文书
消防安全承诺书
2014/05/22 职场文书
计划生育证明书写要求
2014/09/17 职场文书
未婚证明书模板
2014/10/08 职场文书
2019新员工试用期转正工作总结范文
2019/08/21 职场文书
pytorch中的model.eval()和BN层的使用
2021/05/22 Python
简单介绍Python的第三方库yaml
2021/06/18 Python