Проблема: в проекте vue после использования Keep-Alive компоненты могут кэшироваться. Но при фактическом использовании часто будет сцена, то есть страница сведений о списке. После перехода со списка на страницу сведений, а затем возвращения на страницу списка, мы ожидаем, что страница списка будет кэширована; но если он переключается. При возвращении на эту страницу списка после перехода на другие страницы списка мы ожидаем, что он снова получит данные;
Метод: Чтобы решить эту проблему, нам нужно использовать идентификатор, чтобы определить, возвращается ли текущая страница со страницы сведений или повторно вводится; здесь я использую атрибут, добавленный в мета в маршруте для управления, код выглядит следующим образом :
const routes = [
{
name: 'xxx',
path: 'xxxx',
component: component,
meta: {
keepAlive: true,
isPush: true // 用于标识是否为push进入该页面
}
}
]
Здесь мы определяем атрибут isPush для управления. Здесь наша идея заключается в том, что push приходит по умолчанию. При переходе на страницу сведений установите для него значение false, а затем определите, активировано ли значение, истинно, обновите его снова, и оно будет false Просто измените значение обратно на true. код показан ниже:
// 去详情页面的方法
goDetail(){
this.$route.meta.isPush = false;
this.$router.push('detail');
},
// 再次激活的钩子
acitvated(){
// 如果isPush为true,证明不是详情页返回的,否则就是从详情页返回的
if(this.$route.meta.isPush){
// 重置这个页面的信息
this.resetTable()
}else{
// 重置isPush的状态
this.$route.meta.isPush = true;
}
}
Таким образом, можно определить, была ли страница активирована со страницы сведений или введена с других страниц.