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中instanceof运算符的用法总结
Nov 19 Javascript
JavaScript中的类(Class)详细介绍
Dec 30 Javascript
JavaScript实现常用二级省市级联下拉列表的方法
Mar 25 Javascript
javascript 实现map集合
Apr 03 Javascript
详解Matlab中 sort 函数用法
Mar 20 Javascript
原生js实现放大镜效果
Jan 11 Javascript
Javascript es7中比较实用的两个方法示例
Jul 21 Javascript
详解vue2.0+axios+mock+axios-mock+adapter实现登陆
Jul 19 Javascript
node.js学习笔记之koa框架和简单爬虫练习
Dec 13 Javascript
使用xampp将angular项目运行在web服务器的教程
Sep 16 Javascript
node.JS事件机制与events事件模块的使用方法详解
Feb 06 Javascript
JavaScript常用8种数组去重代码实例
Sep 09 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
全国FM电台频率大全 - 10 江苏省
2020/03/11 无线电
一个简单的网页密码登陆php代码
2012/07/17 PHP
PHP页面转UTF-8中文编码乱码的解决办法
2015/10/20 PHP
PHP实现的堆排序算法详解
2017/08/17 PHP
jquery创建div 实现代码
2009/04/27 Javascript
通过jQuery打造支持汉字,拼音,英文快速定位查询的超级select插件
2010/06/18 Javascript
javascript分页代码实例分享(js分页)
2013/12/13 Javascript
JS遍历Json字符串中键值对先转成JSON对象再遍历
2014/08/15 Javascript
jquery获得同源iframe内body下标签的值的方法
2014/09/25 Javascript
XML、HTML、CSS与JS的区别整理
2016/02/18 Javascript
JavaScript原生对象常用方法总结(推荐)
2016/05/13 Javascript
jQuery 弹出层插件(推荐)
2016/05/24 Javascript
第一次接触神奇的Bootstrap网格系统
2016/07/27 Javascript
JS 终止执行的实现方法
2016/11/24 Javascript
正则表达式,替换所有HTML标签的简单实例
2016/11/28 Javascript
Vuex之理解Mutations的用法实例
2017/04/19 Javascript
详解vue 模版组件的三种用法
2017/07/21 Javascript
React+Webpack快速上手指南(小结)
2018/08/15 Javascript
JS滚轮控制图片缩放大小和拖动的实例代码
2018/11/20 Javascript
node.js实现上传文件功能
2019/07/15 Javascript
vue项目中使用AES实现密码加密解密(ECB和CBC两种模式)
2019/08/12 Javascript
Vue脚手架编写试卷页面功能
2020/03/17 Javascript
[01:34]2014DOTA2 TI预选赛预选赛 选手比赛房大揭秘!
2014/05/20 DOTA
Python基于回溯法子集树模板解决数字组合问题实例
2017/09/02 Python
Django数据库连接丢失问题的解决方法
2018/12/29 Python
python3.7 的新特性详解
2019/07/25 Python
俄罗斯电子产品在线商店:UltraTrade
2020/01/30 全球购物
销售心得体会
2014/01/02 职场文书
村长贪污检举信
2014/04/04 职场文书
道路施工安全责任书
2014/07/24 职场文书
我的中国梦演讲稿500字
2014/08/19 职场文书
个人先进事迹总结
2015/02/26 职场文书
超搞笑婚前保证书
2015/05/08 职场文书
大学班长竞选稿
2015/11/20 职场文书
人生哲理妙语30条:淡写流年,笑过人生
2019/09/04 职场文书
Python基础之赋值,浅拷贝,深拷贝的区别
2021/04/30 Python