A,B,C,D四个页面,底部有tabs切换,首次点击切换时刷新页面,再次点击切换时取缓存中的页面数据,D页面有按钮,点击清除缓存,重新进行页面刷新以及页面缓存
tabs组件
<transition @after-enter="afterRouterChange">
<keep-alive :include="keepAliveArr">
<router-view ref="child"></router-view>
</keep-alive>
</transition>
data(){
return{
}}
computed: {
keepAliveArr() {
return this.$store.state.keepAliveArr;
},
},
methods:{
afterRouterChange() {
// 记录子组件name,用于keepalive
let childName = this.$refs.child.$options.name;
this.$store.commit("pushArray", childName);
},
}
D页面刷新按钮
refreshData() {
this.$store.commit("spliceArray", []);
},
vuex文件
state: {
keepAliveArr: [],
}
mutations: {
spliceArray(state, name) {
state.keepAliveArr = name
},
pushArray(state, childName) {
if (!state.keepAliveArr.includes(childName)) {
state.keepAliveArr.push(childName);
}
},
}