vue 단일 페이지 반환 페이지 keeplive 캐 시 문제 해결
A 쪽:
B 쪽:
해결 방법:
keep-alive 캐 시 를 이용 하여 캐 시가 필요 한 페이지
1.app.vue 에 router-view 를 바 꿉 니 다.
<template>
<div id="app">
<keep-alive>
<router-view v-if="$route.meta.keepAlive">
<!-- , page1,page2 -->
</router-view>
</keep-alive>
<router-view v-if="!$route.meta.keepAlive">
<!-- , page3 -->
</router-view>
</div>
</template>
2.router/index.js 에 루트 정보 추가,캐 시가 필요 한 페이지 설정keepAlive:캐 시 필요 한 페이지 설정
isBack:beforerRouteEnter 라 는 갈고리 함수 의 from 매개 변 수 를 통 해 어느 페이지 에서 왔 는 지 판단 합 니 다.이 매개 변 수 는 실 행 될 때 구성 요소 인 스 턴 스 가 생 성 되 지 않 았 기 때문에 data 에서 변 수 를 정의 할 수 없습니다.그래서 우 리 는 경로 에서 변 수 를 isBack 로 정의 하여 판단 할 수 있 습 니 다.
{
path: '/trade',
name: 'trade',
component: () => import( /* webpackChunkName: "about" */ '@/views/trade.vue'),
meta: {
title:'trade.tradeTitle',
keepAlive: true, //
isBack:false, //
}
},
{
path: '/detail/:id',
name: 'detail',
component: () => import( /* webpackChunkName: "about" */ '@/views/detail.vue'),
meta: {
title:'trade.detailTitle',
keepAlive: false,
isBack:false,//
}
},
갈고리 함수 의 실행 순서:keep-alive 사용 안 함
beforeRouteEnter --> created --> mounted --> destroyed
keep-alive 사용 하기
beforeRouteEnter --> created --> mounted --> activated --> deactivated
캐 시 페이지 에 다시 들 어가 면 beforeRoute Enter-->activated-->deactivated 만 실 행 됩 니 다.created 와 mounted 는 더 이상 실행 되 지 않 습 니 다.우 리 는 서로 다른 갈고리 함 수 를 이용 하여 다른 일 을 할 수 있다.상기 갈고리 함수 의 집행 시기 와 집행 순 서 를 이해 해 야 한다.본 튜 토리 얼 의 핵심 은 이 갈고리 함수 에 의존한다.
activated 와 deactivated 는 keep-alive 를 사용 한 후 vue 에서 비교적 중요 한 두 개의 갈고리 함수 입 니 다.자세히 알 아 보 는 것 을 권장 합 니 다.
A 페이지 에서 beforerRoute Enter 라 는 갈고리 함수 에서 어느 페이지 에서 왔 는 지 판단 합 니 다.
beforeRouteLeave(to, from, next) {
// , `this`, data ( vm )
// https://router.vuejs.org/zh-cn/advanced/navigation-guards.html
// , meta , 。 meta isBack
// https://router.vuejs.org/zh-cn/advanced/meta.html
if (from.path === '/detail'){
// ,
// B detail , ,
to.meta.isBack = true;
}else{
to.meta.isBack = false;
}
next();
},
data 에서 변 수 를 정의 합 니 다 isFirst Enter 는 처음 들 어 왔 는 지,페이지 를 새로 고 쳤 는 지,기본 false 입 니 다.
data() {
return {
isFirstEnter:false,
};
},
created 에서 is First Enter 를 true 로 바 꾸 는 것 은 페이지 에 처음 들 어가 거나 새로 고침 한 것 임 을 설명 합 니 다.
created() {
this.isFirstEnter=true;
//
// keep-alive (2+ )
this.$nextTick(() => {
this.getLists();
});
},
activated 에 판단 조건 추가
activated() {
if(this.$route.meta.isBack || !this.isFirstEnter){
// isBack false, , ,
// isFirstEnter true, ,
this.tradeList=[]
this.AjaxList = [] // ,
this.pageNum = 1;
this.$nextTick(() => {
this.getLists();
});
}else{
this.$route.meta.isBack=false
this.isFirstEnter=false;
}
},
이 문 제 는 vue 단일 페이지 반환 페이지 keeplive 캐 시 문 제 를 해결 하 는 것 이 바로 편집장 이 여러분 에 게 공유 한 모든 내용 입 니 다.참고 가 되 고 저 희 를 많이 사랑 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Fastapi websocket 및 vue 3(Composition API)1부: FastAPI virtualenv 만들기(선택 사항) FastAPI 및 필요한 모든 것을 다음과 같이 설치하십시오. 생성main.py 파일 및 실행 - 브라우저에서 이 링크 열기http://127.0.0.1:...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.