1.在路由表定义meta属性
{
path: '/',
meta:{
keepAlive: false, // 需要被缓存
},
name:'index',
component: require('@/views/index').default
},
{
path: '/order',
meta:{
keepAlive: true,
},
name:'order',
component: require('@/views/order/index').default
},
{
path: '/order/detail',
meta:{
keepAlive: false,
},
name:'order-detail',
component: require('@/views/order/detail').default
},
2.在app.vue中用keep-alive包裹router-view
<div class="main">
<keep-alive>
<router-view v-if="$route.meta.keepAlive" :key="key"></router-view>
</keep-alive>
<router-view v-if="!$route.meta.keepAlive" :key="key"></router-view>
</div>
3.在订单列表页离开时吧,判断不需要缓存组件,清楚一下已缓存的组件;
beforeRouteLeave (to, from, next) {
if(to.path!=='/order/detail'){
this.$vnode.parent.componentInstance.cache={};
this.$vnode.parent.componentInstance.keys=[];
}
next();
},
本文介绍如何通过Vue.js中的路由配置实现页面缓存,利用keep-alive组件避免重复加载,提高用户体验。文章详细展示了如何设置路由的meta属性来区分是否需要缓存,并提供了解决方案以确保组件正确缓存与清理。
1611





