基于vue的keepalive实现路由缓存
前言:
在开发很多管理系统过程之中,常遇到这种需求,需要对打开路由页面进行缓存,然后在系统页眉提供方便查阅的tab标签进行切换以及对已经缓存页面进行数据刷新和清除数据操作。具体演示如下图所示:
在上面演示中实现了类似window tab标签页效果,会对当前数据进行缓存。在浏览器中实现对路由页面的缓存可以减少接口请求,也方便了用户来回切换想搜索的数据列表。原理:
Vue提供的keep-alive API实现对路由组件的缓存。include属性可以绑定一个数组,里面是需要路由组件的path值,可以实现对该路由组件进行缓存,如果不需要对路由进行缓存,直接移除该项元素即可。
官网文档链接: https://v2.cn.vuejs.org/v2/guide/components-dynamic-async.html#%E5%9C%A8%E5%8A%A8%E6%80%81%E7%BB%84%E4%BB%B6%E4%B8%8A%E4%BD%BF%E7%94%A8-keep-alive
1.创建TopBar.vue 组件并导入到父组件中 {{ item.meta.title }} 2.vuex 中存储 目前缓存的路由列表import Vue from "vue" import Vuex from "vuex" import router from "@/router" Vue.use(Vuex) const store = new Vuex.Store({ //存数据的仓库 state: { cacheViews: [] }, //修改仓库中数据的同步方法 mutations: { addCacheView(state, view) { let index = state.cacheViews.findIndex(item => item.path == view.path) let { path, meta } = view; //如果在数组中找不到当前路由就添加到该数组中 if (index == -1) { state.cacheViews.push({ path, meta }) // 添加之后超过10个子路由需要删除第0个 if(state.cacheViews.length >10){ state.cacheViews.pop() } } }, delCacheView(state, index) { //如果删除清空了整个数组就切换页面路由到首页 if (state.cacheViews.length == 1) { state.cacheViews.splice(index, 1); router.push("/home") } else if (state.cacheViews.length - 1 == index) { //如果删除的是最后一个,需要切换路由到删除之后的最后一个 state.cacheViews.splice(index, 1); router.push(state.cacheViews[state.cacheViews.length - 1]) } else { //否则,直接进行删除 state.cacheViews.splice(index, 1); } } }, //调用 同步方法 实现异步修改仓库中的数据 actions: { } }) export default store;3.在路由上 加上切换动画组件 与 keepp-alive缓存路由
includes 属性 为当前缓存的路由列表 import {mapState} from "vuex" computed:{ ...mapState["cacheViews"] }4.生命周期activated和deactivated
采用了keep-alive缓存的路由组件,重新进入该路由,路由组件不会重新创建,所以也就不会触发组件的生命周期函数(比如说beforeCreate、mounted等)。所以在对该页面进行数据更新或者清除数据。vue为我们提供了activated和deactivated生命周期函数,当重新进入路由组件会触发activated函数,离开则会触发deactivated。 A page
30亿元计划背后,如何推动脑科学技术研究走出实验室?10月12日上午,由陈天桥成立的天桥脑科学研究院(TCCI)转化中心,与中国神经科学学会神经外科学基础与临床分会主办,钛媒体App同步直播的对话大脑院士论坛第四期在上海召开。本次论
超乎想象造一辆车竟然需要1000颗芯片没有接触汽车制造的人,很难想象现在的电动智能汽车需要多少颗芯片。蓝裕文化工业旅游设计院了解到,以往制造一辆传统汽车一般需要用到五六百颗左右芯片,现如今的智能汽车则远超这个数。芯片(
这台纯电轿跑SUV绝对可以给你新鲜感!试驾爱驰U6诶?你看这款车还挺帅的,叫爱驰U6,这牌子没听说过啊?路人甲说道,路人乙回道不知道是哪家的,现在年轻人都喜欢这样的车。,这是小编还没出停车场就听到两位路人的对话。可见,爱驰汽车这个
基于SSM的生鲜商城源码与论文今天给大家分享的是,2022年中国地质大学毕业设计,题目是基于SSM的生鲜商城设计与实现,开发语言Java框架SSMJDK版本JDK1。8服务器tomcat7数据库mysql5。7
浅谈长沙房价未来十年的发展趋势长沙目前的房价是1。5万2万,作为一个地地道道的湖南人,我觉得长沙的房价还是会长期呈现一个缓慢上升的趋势,未来可对标重庆成都青岛等城市的房价。一个城市房价的决定因素有很多,但对于普
抵押补充贷款时隔两年半重出江湖将被投向何处?图据新华社近日,中国人民银行发布9月三大政策性银行抵押补充贷款(PledgedSupplementalLending,PSL)数据,引发市场关注。数据显示,截至9月末,国家开发银行
存够25年生活费,就能退休了?财富自由,提前退休,应该是所有打工人的梦想,但大家手里没个几百万现金都不好意思谈退休这件事。2021年胡润研究院发布的2021年胡润财富自由门槛更是认为一线城市达到1900万二线城
广东神射手蜕变提升,辽篮弃将转型成主力,大鸟成深圳崛起绊脚石文小桢随着广东宏远顺利抵达赛区,并通过CBA公司的检测,从第二轮开始正式参赛,CBA新赛季常规赛也是真正步入了正轨。虽然刚结束隔离,也没有太多时间去热身,但广东队依然在本赛季参加的
北京将扩大普惠性托育服务,满足3岁以下婴幼儿入托需求根据报告,这些托育服务,将会更多涉及到3岁以下婴幼儿的托育服务。这也是今年两会期间许多代表委员提到的,减轻家庭养育成本,让更多适龄夫妻愿意生育。近年来我国人口出生率下降明显,原因复
今天a股收盘涨跌互现,为什么会反弹受阻?明天a股会怎么走?今天a股三大指数集体小幅低开,开盘后大小股票分化,权重股低开震荡下滑,以科技为首的题材股强势,造成盘面进入分化。但随着信创,鸿蒙等题材股涨幅扩大后,整个盘面慢慢地回暖,就连上证指数
(新华全媒)安徽芜湖新能源汽车产业驶入快车道今年以来,安徽省芜湖市新能源汽车产业快速发展。据芜湖市经信局提供的数据,今年1月至7月,芜湖市新能源汽车产量15。61万辆,同比增长130。2,销量13。79万辆,同比增长36。8