官方文档:html
keep-alive
若是把切换出去的组件保留在内存中,能够保留它的状态或避免从新渲染。为此能够添加一个 keep-alive
指令参数:vue
<keep-alive> <component :is="currentView"> <!-- 非活动组件将被缓存! --> </component> </keep-alive>
Props:正则表达式
include
- 字符串或正则表达式。只有匹配的组件会被缓存。exclude
- 字符串或正则表达式。任何匹配的组件都不会被缓存。用法:数组
<keep-alive>
包裹动态组件时,会缓存不活动的组件实例,而不是销毁它们。和 <transition>
类似,<keep-alive>
是一个抽象组件:它自身不会渲染一个 DOM 元素,也不会出如今父组件链中。缓存
当组件在 <keep-alive>
内被切换,它的 activated
和 deactivated
这两个生命周期钩子函数将会被对应执行。ide
在 2.2.0 及其更高版本中,
activated
和deactivated
将会在<keep-alive>
树内的全部嵌套组件中触发。函数
2.1.0 新增:include
和 exclude
属性容许组件有条件地缓存。两者均可以用逗号分隔字符串、正则表达式或一个数组来表示:ui
<!-- 逗号分隔字符串 --> <keep-alive include="a,b"> <component :is="view"></component> </keep-alive> <!-- 正则表达式 (使用 `v-bind`) --> <keep-alive :include="/a|b/"> <component :is="view"></component> </keep-alive> <!-- 数组 (使用 `v-bind`) --> <keep-alive :include="['a', 'b']"> <component :is="view"></component> </keep-alive>
匹配首先检查组件自身的 name
选项,若是 name
选项不可用,则匹配它的局部注册名称 (父组件 components
选项的键值)。匿名组件不能被匹配。spa
<keep-alive>
不会在函数式组件中正常工做,由于它们没有缓存实例。code
<keep-alive :include="includedComponents"> <router-view></router-view> </keep-alive>
includedComponents动态设置便可
在2.1.0以前,咱们能够这样作:
// 这是目前用的比较多的方式 <keep-alive> <router-view v-if="!$route.meta.notKeepAlive"></router-view> </keep-alive> <router-view v-if="$route.meta.notKeepAlive"></router-view>
router设置
routes: [ { path: '/', redirect: '/index', component: Index, mate: { keepAlive: true }}, { path: '/common', component: TestParent, children: [ { path: '/test2', component: Test2, mate: { keepAlive: true } } ] } // 表示index和test2都使用keep-alive
参考连接:http://www.jianshu.com/p/e4bd12e789dd