<keep-alive>
是Vue的内置组件,能在组件切换过程中将状态保留在内存中,防止重复渲染DOM。
- 包裹动态组件时,会缓存不活动的组件实例,而不是销毁它们。和 相似, 是一个抽象组件:它自身不会渲染一个 DOM 元素,也不会出现在父组件链中。
- 当组件在 内被切换,它的 activated 和 deactivated 这两个生命周期钩子函数将会被对应执行,相应的created和mounted钩子函数将不再被执行。
prop
:
- include: 字符串或正则表达式。只有匹配的组件会被缓存。
- exclude: 字符串或正则表达式。任何匹配的组件都不会被缓存。 在2.1.0版本Vue中
常见用法:// 组件export default { name: 'test-keep-alive', data () { return { includedComponents: "test-keep-alive" } }}
结合router,缓存部分页面
使用$route.meta的keepAlive属性:需要在router中设置router的元信息meta://...router.jsexport default new Router({ routes: [ { path: '/', name: 'Hello', component: Hello, meta: { keepAlive: false // 不需要缓存 } }, { path: '/page1', name: 'Page1', component: Page1, meta: { keepAlive: true // 需要被缓存 } } ]})使用效果以上面router的代码为例: Vue
{ {msg}}
(1) 在Page1页面输入框输入“asd”,然后手动跳转到Hello页面;(2) 回到Page1页面发现之前输入的"asd"依然保留,说明页面信息成功保存在内存中;{ {msg}}