Keepalive 是 Vue 內置的組件,主要作用是在組件切換時,保留組件的狀態,避免重復渲染和銷毀。但在使用的過程中,可能會碰到一些坑。
首先,需要明確一個概念,如果兩個路由指向同一個組件,且該組件被 keepalive 包裹,則兩個路由都指向同一個組件實例。也就是說,如果在組件內部修改了狀態,那么這個狀態會被共享,不論是哪個路由調用該組件。
<keep-alive>
<router-view />
</keep-alive>
在上面的代碼中,<keep-alive> 包裹了 <router-view>,表示要緩存被渲染的組件。但如果希望某個組件不被緩存,需要在組件內部添加一個特殊的參數,如下:
<script>
export default {
name: 'foo',
// 避免緩存該組件
meta: {
keepAlive: false
}
};
</script>
而如果希望某個組件始終被緩存,則可以對路由進行配置,如下:
const routes = [
{
path: '/foo',
component: Foo,
meta: { keepAlive: true }
}
]
但需要注意,如果希望對所有組件進行緩存,需要在路由的根節點上添加 <keep-alive>,如下:
const routes = [
{
path: '/',
component: Home,
children: [
{
path: '',
component: Dashboard
},
{
path: 'foo',
component: Foo
},
{
path: 'bar',
component: Bar
}
]
}
];
<keep-alive>
<router-view />
</keep-alive>
總之,在使用 keepalive 時一定要注意組件狀態的共享和區分,以及在路由和組件內部的緩存配置。
上一篇html 源代碼素材
下一篇gin加vue