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 动态加载 css 方法总结
Jul 11 Javascript
javascript检查表单数据是否改变的方法
Jul 30 Javascript
利用jquery.qrcode在页面上生成二维码且支持中文
Feb 12 Javascript
js简单实现点击左右运动的方法
Apr 10 Javascript
JavaScript ES5标准中新增的Array方法
Jun 28 Javascript
ionic实现带字的toggle滑动组件
Aug 27 Javascript
使用jquery datatable和bootsrap创建表格实例代码
Mar 17 Javascript
详解vue模拟加载更多功能(数据追加)
Jun 23 Javascript
浅谈js中的bind
Mar 18 Javascript
Javascript中Math.max和Math.max.apply的区别和用法详解
Aug 24 Javascript
JS highcharts实现动态曲线代码示例
Oct 16 Javascript
解决VantUI popup 弹窗不弹出或无蒙层的问题
Nov 03 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
比file_get_contents稳定的curl_get_contents分享
2012/01/11 PHP
php jq jquery getJSON跨域提交数据完整版
2013/09/13 PHP
百度地图经纬度转换到腾讯地图/Google 对应的经纬度
2015/08/28 PHP
PHP共享内存使用与信号控制实例分析
2018/05/09 PHP
广告代码静态化js通用函数
2007/05/09 Javascript
jQuery实现列表自动滚动循环滚动展示新闻
2014/08/22 Javascript
javascript异步编程代码书写规范Promise学习笔记
2015/02/11 Javascript
jQuery中extend()和fn.extend()方法详解
2015/06/03 Javascript
jQuery实现的类似淘宝网站搜索框样式代码分享
2015/08/24 Javascript
js实现的后台左侧管理菜单代码
2015/09/11 Javascript
比较常见的javascript中定义函数的区别
2015/11/09 Javascript
javascript数组克隆简单实现方法
2015/12/16 Javascript
JavaScript必知必会(七)js对象继承
2016/06/08 Javascript
微信小程序开发实战教程之手势解锁
2016/11/18 Javascript
vue日期组件 支持vue1.0和2.0
2017/01/09 Javascript
ajax请求data遇到的问题分析
2018/01/18 Javascript
vuex + axios 做登录验证 并且保存登录状态的实例
2018/09/16 Javascript
vue-router判断页面未登录自动跳转到登录页的方法示例
2018/11/04 Javascript
vuex实现像调用模板方法一样调用Mutations方法
2019/11/06 Javascript
python下调用pytesseract识别某网站验证码的实现方法
2016/06/06 Python
Python List cmp()知识点总结
2019/02/18 Python
python抓取需要扫微信登陆页面
2019/04/29 Python
python opencv minAreaRect 生成最小外接矩形的方法
2019/07/01 Python
Python列表list操作相关知识小结
2020/01/29 Python
Python实现动态给类和对象添加属性和方法操作示例
2020/02/29 Python
python使用QQ邮箱实现自动发送邮件
2020/06/22 Python
加拿大便宜的隐形眼镜商店:Clearly
2016/09/15 全球购物
英国日常交易网站:Wowcher
2018/09/04 全球购物
事业单位请假制度
2014/01/13 职场文书
军训自我鉴定200字
2014/02/13 职场文书
企业文化标语口号
2014/06/09 职场文书
销售目标责任书
2014/07/23 职场文书
2015年安全工作总结范文
2015/04/02 职场文书
大学生心理健康活动总结
2015/05/08 职场文书
北京青年观后感
2015/06/15 职场文书
2016关于读书活动的心得体会
2016/01/14 职场文书