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 自动安装exe程序
Nov 30 Javascript
IE8 兼容性问题(属性名区分大小写)
Jun 04 Javascript
Asp.net下利用Jquery Ajax实现用户注册检测(验证用户名是否存)
Sep 12 Javascript
jQuery中add实现同时选择两个id对象
Oct 22 Javascript
jquery入门—数据删除与隔行变色以及图片预览
Jan 07 Javascript
jquery根据name属性查找的小例子
Nov 21 Javascript
javascript中的Base64、UTF8编码与解码详解
Mar 18 Javascript
Js与Jq获取浏览器和对象值的方法
Mar 18 Javascript
jQuery实现表格行和列的动态添加与删除方法【测试可用】
Aug 01 Javascript
jQuery获取选中单选按钮radio的值
Dec 27 Javascript
Vue 处理表单input单行文本框的实例代码
May 09 Javascript
Vue学习之常用指令实例详解
Jan 06 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 CURL获取返回值的方法
2014/05/04 PHP
Thinkphp中的volist标签用法简介
2014/06/18 PHP
PHP实现C#山寨ArrayList的方法
2015/07/16 PHP
PHP命名空间和自动加载类
2016/04/03 PHP
深入理解PHP之源码目录结构与功能说明
2016/06/01 PHP
仿服务器端脚本方式的JS模板实现方法
2007/04/27 Javascript
js中if语句的几种优化代码写法
2011/03/12 Javascript
自己写的兼容ie和ff的在线文本编辑器类似ewebeditor
2012/12/12 Javascript
javascript+html5实现绘制圆环的方法
2015/07/28 Javascript
CSS或者JS实现鼠标悬停显示另一元素
2016/01/22 Javascript
BootStrap和jQuery相结合实现可编辑表格
2016/04/21 Javascript
Bootstrap优化站点资源、响应式图片、传送带使用详解3
2016/10/14 Javascript
JavaScript实现的贝塞尔曲线算法简单示例
2018/01/30 Javascript
详解Angular操作cookies方法
2018/06/01 Javascript
基于layui数据表格以及传数据的方式
2018/08/19 Javascript
JavaScript使用indexOf()实现数组去重的方法分析
2018/09/04 Javascript
微信小程序实现用table显示数据库反馈的多条数据功能示例
2019/05/07 Javascript
IntelliJ IDEA编辑器配置vue高亮显示
2019/09/26 Javascript
jQuery+css实现的点击图片放大缩小预览功能示例【图片预览 查看大图】
2020/05/29 jQuery
微信小程序实现购物车小功能
2020/12/30 Javascript
python类装饰器用法实例
2015/06/04 Python
python使用rpc框架gRPC的方法
2018/08/24 Python
Python实现多线程的两种方式分析
2018/08/29 Python
对pandas的行列名更改与数据选择详解
2018/11/12 Python
Python 做曲线拟合和求积分的方法
2018/12/29 Python
python按键按住不放持续响应的实例代码
2019/07/17 Python
解决python 读取 log日志的编码问题
2019/12/24 Python
Python3使用Selenium获取session和token方法详解
2021/02/16 Python
css3中用animation的steps属性制作帧动画
2019/04/25 HTML / CSS
迷你唐卡软皮鞋:Minnetonka Moccasin
2018/05/01 全球购物
C语言中break与continue的区别
2012/07/12 面试题
北承题目(C++)
2012/05/16 面试题
const char*, char const*, char*const的区别是什么
2014/07/09 面试题
《回乡偶书》教学反思
2014/04/12 职场文书
2014年房地产工作总结范文
2014/11/19 职场文书
微信小程序scroll-view不能左右滑动问题的解决方法
2021/07/09 Javascript