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.simple.tree插件 更简单,兼容性更好的无限树插件
Sep 03 Javascript
js 编码转换 gb2312 和 utf8 互转的2种方法
Aug 07 Javascript
jQuery CSS()方法改变现有的CSS样式表
Sep 09 Javascript
JavaScript实现的字符串replaceAll函数代码分享
Apr 02 Javascript
jquery实现初次打开有动画效果的网页TAB切换代码
Sep 06 Javascript
js 获取站点应用名的简单实例
Aug 18 Javascript
js匿名函数使用&amp;传参(实例)
Sep 08 Javascript
vue todo-list组件发布到npm上的方法
Apr 04 Javascript
微信小程序实现人脸识别
May 25 Javascript
浅谈Angular单元测试总结
Mar 22 Javascript
微信小程序iOS下拉白屏晃动问题解决方案
Oct 12 Javascript
微信小程序后端实现授权登录
Feb 24 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变量引用的面试题
2010/08/08 PHP
CI(CodeIgniter)模型用法实例分析
2016/01/20 PHP
来自chinaz的ajax获取评论代码
2008/05/03 Javascript
利用404错误页面实现UrlRewrite的实现代码
2008/08/20 Javascript
jquery 实现的全选和反选
2009/04/15 Javascript
Javascript计算两个marker之间的距离(Google Map V3)
2013/04/26 Javascript
node.js中的定时器nextTick()和setImmediate()区别分析
2014/11/26 Javascript
AngularJS基础知识
2014/12/21 Javascript
JS实现两表格里数据来回转移的方法
2015/05/28 Javascript
JS实现获取当前URL和来源URL的方法
2016/08/24 Javascript
浅谈Javascript中的Label语句
2016/12/14 Javascript
js实现可输入可选择的select下拉框
2016/12/21 Javascript
Vue的Flux框架之Vuex状态管理器
2017/07/30 Javascript
解决vue打包项目后刷新404的问题
2018/03/06 Javascript
解决JS表单验证只有第一个IF起作用的问题
2018/12/04 Javascript
layui清空,重置表单数据的实例
2019/09/12 Javascript
JS定时器如何实现提交成功提示功能
2020/06/12 Javascript
vue3.0 上手体验
2020/09/21 Javascript
[06:40]2014DOTA2西雅图国际邀请赛 DK战队巡礼
2014/07/07 DOTA
[01:22]DOTA2神秘商店携大量周边降临完美大师赛
2017/11/07 DOTA
Python实现Const详解
2015/01/27 Python
详解Python中__str__和__repr__方法的区别
2015/04/17 Python
python使用itchat实现手机控制电脑
2018/02/22 Python
Python中new方法的详解
2019/01/15 Python
python 动态迁移solr数据过程解析
2019/09/04 Python
python conda操作方法
2019/09/11 Python
python让函数不返回结果的方法
2020/06/22 Python
Python 求向量的余弦值操作
2021/03/04 Python
HTML5离线缓存Manifest是什么
2016/03/09 HTML / CSS
英国鲜花速递:Serenata Flowers
2018/04/03 全球购物
中班开学寄语
2014/04/04 职场文书
实习单位鉴定评语
2014/04/26 职场文书
2014学习优秀共产党员先进事迹材料思想汇报
2014/09/14 职场文书
婚内房产协议书范本
2014/10/02 职场文书
考研英语辞职信
2015/05/13 职场文书
python的列表生成式,生成器和generator对象你了解吗
2022/03/16 Python