需求
list 页面做缓存 add/edit 页面不做缓存 detail 页面不做缓存 …
前人法子
<keep
-alive
>
<!-- 需要缓存
-->
<router
-view
:include
="include" v
-if="$route.meta.keepAlive" />
</keep
-alive
>
<!-- 不需要缓存
-->
<router
-view v
-if="!$route.meta.keepAlive" />
export default {
name
: 'app',
data
: () => ({
include
: [],
}),
watch
: {
$route(to
, from) {
if (to
.meta
.keepAlive
) {
!this.include
.includes(to
.name
) && this.include
.push(to
.name
);
}
if (from.meta
.keepAlive
&& to
.meta
.deepth
< from.meta
.deepth
) {
var index
= this.include
.indexOf(from.name
);
index
!== -1 && this.include
.splice(index
, 1);
}
},
},
};
粗暴法子
<transition name="move" mode="out-in">
<keep-alive>
<router-view v-if="$route.meta.keepAlive" />
</keep-alive>
</transition>
<router-view v-if="!$route.meta.keepAlive" />
watch
: {
$route(to
, from) {
console
.log(to
);
if (to
.meta
.deepth
< from.meta
.deepth
) {
to
.meta
.keepAlive
= false;
} else {
to
.meta
.keepAlive
= true;
}
}
},
new Router({
routes
: [
{
path
: '/',
name
: 'index',
component
: () => import('./views/keep-alive/index.vue'),
meta
: {
deepth
: 1,
keepAlive
: true
}
},
{
path
: '/list',
name
: 'list',
component
: () => import('./views/keep-alive/list.vue'),
meta
: {
deepth
: 1
keepAlive
: true
}
},
{
path
: '/detail',
name
: 'detail',
component
: () => import('./views/keep-alive/detail.vue'),
meta
: {
deepth
: 0,
keepAlive
: false
}
},
{
path
: '/edit',
name
: 'edit',
component
: () => import('./views/keep-alive/edit.vue'),
meta
: {
deepth
: 2,
keepAlive
: false
}
}
]
})
转载请注明原文地址: https://yun.8miu.com/read-59433.html