原因
在列表页有多个搜索组件和搜索条件存在,要做到点进详情后,缓存当前的条件,但是从主页进入必须要重置,一开始是想通过路由传参,但还是要给全部的搜索条件进行赋值(虽然这个方法还要把部分组件赋值)
逻辑 从 A页到C页需要重新渲染和获取数据 从D页到C页,需要缓存
实现
A.vue
//强制刷新keep alive
beforeRouteLeave (to, from, next) {
to.meta.isrefer = true;//刷新B的数据
to.meta.type=false;
next();
},
B.vue
//强制刷新keep alive
beforeRouteEnter(to, from, next) {
console.log(to, "1111");
to.meta.keeplive = true;
next((vm) => {
//这里把页面初始值重新赋值,以刷新页面
if (vm.$route.meta.isrefer) {
vm.dataList = [];
vm.$route.meta.isrefer = false; //恢复初始值
vm.seatList = [];
vm.query = {
activityId: vm.$route.query.activityId,
meetplaceId: vm.$route.query.meetplaceId,
};
vm.findDom("#list", () => {
vm.defaultIt(); //重置搜索条件等
vm.initPage(); //请求数据
});
}
});
},