目标
在App.vue中的router-view外层套上一个keep-alive组件
- 缓存的一级路由页面切换不被释放, 但是首页还是会重新请求数据
- 二级路由页可以套上一个keep-alive组件
对router-view使用exclude属性来区别, 哪些页面组件可以缓存
特别注意exclude里是组件的name名字(跟路由没什么关系)
<template>
<div>
<keep-alive :exclude="['ArticleDetail', 'Login']" :include="['user','edit']">
<router-view></router-view>
</keep-alive>
</div>
</template>
include - 字符串或正则表达式。只有名称匹配的组件会被缓存。 exclude - 字符串或正则表达式。任何名称匹配的组件都不会被缓存。 max - 数字。最多可以缓存多少组件实例。
当组件在 内被切换,它的 activated 和 deactivated 这两个生命周期钩子函数将会被对应执行。
activated:可以理解为,当组件第一次加载和切换回来时触发,用来替换created 钩子 deactivated :可以理解为,当离开组件时触发
async activated() {
const res = await articleDetailsAPI({ id: this.$route.params.id })
this.getCommentList()
},
deactivated () {
console.log('我走了');
},
|