有时候会觉得学习vue像在寻宝一样。因为vue中有很多很有用的组件,像之前写的关于插槽组件的那篇一样,我也是认为插槽组件很有用,可以更好的实现组件复用。这篇主要整理keep-alive组件的内容。
keep-alive组件是Vue的内置组件,能在组件切换过程中将状态保留在内存中,防止重复渲染DOM。
keep-alive组件可以使用到动态组件<component>
,也可以使用到路由组件<router-view>
上:
1 | // 使用到动态组件上 |
keep-alive组件内可以由多个子组件,但是要求只能同时渲染一个子组件,也就是多子组件时,可以使用v-if
,v-else
,但不支持v-for
。
它有三个props:include
,exclude
,max
。
include
include
支持组件名匹配字符串或正则表达式的组件被缓存。
1 | <keep-alive include="book"> |
exclude
exclude
跟include
刚好相反,组件名不匹配字符串或正则表达式的组件才会被缓存。用法跟include
一样。
1 | <keep-alive exclude="book"> |
max
max
表示最多可以缓存多少个组件实例。一旦这个数字达到了,在新实例被创建之前,已缓存组件中最久没有被访问的实例会被销毁掉。
1 | <!-- 最多只能缓存10个组件实例,而且是最新被访问的组件实例才会被缓存 --> |