vue2中keep-alive通过路由路径缓存路由
时间: 2023-11-15 22:13:41 浏览: 178
在 Vue 2 中,keep-alive 可以通过路由来缓存路由。具体的做法是在路由配置中,将需要缓存的路由组件包裹在 <keep-alive> 标签中,并给 <keep-alive> 标签添加一个属性 include,值为一个数组,包含需要缓存的路由组件的名称。
例如,我们需要缓存 /home 和 /profile 两个路由组件,那么路由配置可以这样写:
```javascript
import Home from './views/Home.vue'
import Profile from './views/Profile.vue'
export default new Router({
routes: [
{
path: '/',
name: 'home',
component: Home,
meta: {
keepAlive: true // 标记需要缓存
}
},
{
path: '/profile',
name: 'profile',
component: Profile,
meta: {
keepAlive: true // 标记需要缓存
}
}
]
})
```
然后,在 App.vue 中,我们可以将 <router-view> 标签包裹在 <keep-alive> 标签中,并将 include 属性设置为需要缓存的路由组件名称的数组:
```html
<template>
<div id="app">
<keep-alive :include="cachedViews">
<router-view/>
</keep-alive>
</div>
</template>
<script>
export default {
name: 'App',
computed: {
cachedViews () {
// 获取需要缓存的路由组件名称
return this.$store.state.cachedViews
}
}
}
</script>
```
最后,在路由守卫中,我们可以通过 meta 字段来判断当前路由是否需要缓存,并将需要缓存的路由组件名称添加到缓存数组中:
```javascript
router.beforeEach((to, from, next) => {
if (to.meta.keepAlive) {
store.commit('addCachedView', to.name)
} else {
store.commit('removeCachedView', to.name)
}
next()
})
```
这样就可以通过路由路径缓存路由了。
阅读全文
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![-](https://img-home.csdnimg.cn/images/20241231045053.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)