keep-alive 简介
keep-alive 是 Vue 内置的一个组件,可以使被包含的组件保留状态,或避免重新渲染。
用法也很简单:
| 12
 3
 4
 5
 
 | <keep-alive><component>
 <!-- 该组件将被缓存! -->
 </component>
 </keep-alive>
 
 | 
props
include - 字符串或正则表达,只有匹配的组件会被缓存
exclude - 字符串或正则表达式,任何匹配的组件都不会被缓存
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 
 | // 组件 aexport default {
 name: 'a',
 data () {
 return {}
 }
 }
 <keep-alive include="a">
 <component>
 <!-- name 为 a 的组件将被缓存! -->
 </component>
 </keep-alive>可以保留它的状态或避免重新渲染
 <keep-alive exclude="a">
 <component>
 <!-- 除了 name 为 a 的组件都将被缓存 !-->
 </component>
 </keep-alive>
 <!--可以保留它的状态或避免重新渲染  !-->
 
 | 
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 
 | // 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>
 
 | 
在非单页应用的时候,keep-alive 并不能有效的缓存了