有时候会觉得学习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个组件实例,而且是最新被访问的组件实例才会被缓存 --> |