keep-alive相关用法及使用场景
keep-alive 用法
keep-alive
是Vue内置的一个组件,可以使被包含的组件保留状态,避免重新渲染
用法
<keep-alive><component><!-- 该组件将被缓存! --></component>
</keep-alive>
使用场景
例如在A组件内多个输入框中输入信息,此时需要跳转进入B组件进行操作,再返回A组件。若没有使用 keep-alive
,则A组件内输入框中的信息都会被清空,因为A组件被重新渲染。使用 keep-alive
,则会保留之前输入框中的信息
props
include
,只有匹配的组件才会被缓存exclude
,任何匹配的组件都不会被缓存
// 组件 a
export default {name: 'a',data () {return {}}
}
// include
<keep-alive include="a"><component><!-- name 为 a 的组件将被缓存! --></component>
</keep-alive>可以保留它的状态或避免重新渲染// exclude
<keep-alive exclude="a"><component><!-- 除了 name 为 a 的组件都将被缓存! --></component>
</keep-alive>可以保留它的状态或避免重新渲染
只缓存 router-view
中的某个组件 ?
使用include
配合router.meta
// routes 配置
export default [{path: '/',name: 'home',component: Home,meta: {keepAlive: true // 需要被缓存}}, {path: '/:id',name: 'edit',component: Edit,meta: {keepAlive: false // 不需要被缓存}}
]
<keep-alive><router-view v-if="$route.meta.keepAlive"><!-- 这里是会被缓存的视图组件,比如 Home! --></router-view>
</keep-alive><router-view v-if="!$route.meta.keepAlive"><!-- 这里是不被缓存的视图组件,比如 Edit! -->
</router-view>
拓展使用场景
假设这里有 3 个路由: A、B、C。
需求:
- 默认显示 A
- B 跳到 A,A 不刷新
- C 跳到 A,A 刷新
实现方式:
在 A 路由里面设置 meta 属性:
{path: '/',name: 'A',component: A,meta: {keepAlive: true // 需要被缓存} }
在 B 组件里面设置 beforeRouteLeave:
export default {data() {return {};},methods: {},beforeRouteLeave(to, from, next) {// 设置下一个路由的 metato.meta.keepAlive = true; // 让 A 缓存,即不刷新next();} };
在 C 组件里面设置 beforeRouteLeave:
export default {data() {return {};},methods: {},beforeRouteLeave(to, from, next) {// 设置下一个路由的 metato.meta.keepAlive = false; // 让 A 不缓存,即刷新next();} };
这样便能实现 B 回到 A,A 不刷新;而 C 回到 A 则刷新。
部分搬运 vue-router 之 keep-alive
keep-alive相关用法及使用场景相关推荐
- 视频二维码的用法及应用场景说明
视频二维码的用法及应用场景说明: 1. 我没有网站,但我想把自己录的视频,生成一个二维码,以分享给朋友(不要含任何广告): 2. 我是一个小公司,自己没有视频服务器,但我想把自己的产品视频,用二维码的 ...
- Java中Date各种相关用法
Java中Date各种相关用法 本文主要介绍Java中Date各种相关用法. AD: Java中Date各种相关用法(一) 1.计算某一月份的最大天数 Java代码 Calendar time=C ...
- 【c++】14.编译proto和proto相关用法
编译proto和proto相关用法 关于proto相关的知识可以参考系列博客 https://blog.csdn.net/daaikuaichuan/category_9869251.html [xx ...
- $.extend 的相关用法
$.extend 的相关用法 1.1 $.extend(result,item1,item2-..) 将所有的参数项都合并result中,返回result,会破坏result的结构. 1.2 $.ex ...
- boost::mpl::always相关用法的测试程序
boost::mpl::always相关用法的测试程序 实现功能 C++实现代码 实现功能 boost::mpl::always相关用法的测试程序 C++实现代码 #include <boost ...
- boost::mpl::advance相关用法的测试程序
boost::mpl::advance相关用法的测试程序 实现功能 C++实现代码 实现功能 boost::mpl::advance相关用法的测试程序 C++实现代码 #include <boo ...
- boost::mpl::aux::template_arity相关用法的测试程序
boost::mpl::aux::template_arity相关用法的测试程序 实现功能 C++实现代码 实现功能 boost::mpl::aux::template_arity相关用法的测试程序 ...
- boost::mpl::aux::msvc_is_class相关用法的测试程序
boost::mpl::aux::msvc_is_class相关用法的测试程序 实现功能 C++实现代码 实现功能 boost::mpl::aux::msvc_is_class相关用法的测试程序 C+ ...
- boost::mpl::aux::largest_int相关用法的测试程序
boost::mpl::aux::largest_int相关用法的测试程序 实现功能 C++实现代码 实现功能 boost::mpl::aux::largest_int相关用法的测试程序 C++实现代 ...
最新文章
- 如何快速定位当前数据库消耗CPU最高的sql语句?
- HDU1285拓扑排序模版题
- Linux 利用lsof命令恢复删除的文件
- “苹果光环”褪色后,瑞声靠什么坐稳头把交椅?
- 阿里消息队列mq服务器,阿里的架构之路——漫谈MQ
- 【转】c# 协变与抗变
- 前端开发 表单元素 0229
- [Swift]LeetCode113. 路径总和 II | Path Sum II
- 下行物理信道rs_这些CH结尾的LTE物理信道傻傻分不清楚?快来看这篇文章!
- c语言表达式求值的空间复杂度,373-时间复杂度(表达式求值)
- ubuntu 安装 mono报错 E: Unable to correct problems, you have held broken packages.
- python京东预约抢购流程_[Python] 京东秒杀商品抢购-茅台抢购自动获取抢购时间【修改】...
- Linux 安装SNMPWALK工具
- lightoj1138
- C# 程序关闭托盘图标不会自动消失
- python安装h5py
- 如何通过手机话费余额充值Q币?
- 高效程序员系列 别做机器人——让工作自动化
- matlab-线性代数 创建 N阶数量矩阵 N阶单位矩阵 对角矩阵 范德蒙矩阵 等差数列...
- “骑驴找马”很心虚?四大困惑一起解决!
热门文章
- 纯H5+CSS3实现下雨特效
- 视频加密中的“一机一码”是什么意思?
- word2010中“不包含”、“不存在”等特殊字符的输入方法
- es routing 简介
- python爬取今日头条专栏_[python3]今日头条图片爬取
- SpringCloud微服务使用Feign如何暴露接口并整合SpringBoot测试
- 2017中国云计算评测报告 1
- 怎么根据日志分析出 PV 和 UV?
- javaScript的字符串
- 不叫 Andromeda?Google 新系统疑为 Fuchsia