vue 는 keep-alive 를 사용 하여 스크롤 바 위 치 를 유지 하 는 실현 방법
2711 단어 vuekeep-alive스크롤 바 위치
퇴근 하기 20 분 전에 한 편...
간단하게 소개 합 니 다.keep-alive 를 사용 할 때 이전 페이지 로 돌아 가 스크롤 바 위 치 를 유지 하지 않 았 습 니 다.
사실 keep-alive 를 사용 하지 않 아 도 위 치 는 기록 되 지 않 았 다.
하지만 keep-alive 가 적용 되 지 않 을 때 페이지 내용 이 새로 고침 되 기 때문에 그냥 내 버 려 두 었 습 니 다.
사고의 방향
공식 적 으로 scrollBehavior링크를 추천 합 니 다.그러나 위 에 표 시 된 것 은 history.pushstate 의 브 라 우 저 에 만 효력 이 발생 합 니 다.history.pushstate 를 켜 야만 사용 할 수 있 는 지 모 르 겠 습 니 다.이 루어 지 는 것 을 보 니 우호 적 이지 않 습 니 다.직접 만 드 는 것 이 좋 겠 습 니 다.
사고 방향 을 실현 하 는 것 은 이 렇 습 니 다.먼저 경로 에 대상 meta 를 추가 합 니 다.
meta: {
keepAlive: true,
scrollTop: 0,
}
keepAlive 는 페이지,scrollTop 기록 페이지 의 스크롤 위 치 를 유지 해 야 합 니까?그리고 app.vue 에 다음 입 구 를 추가 합 니 다.
<keep-alive>
<router-view v-if="$route.meta.keepAlive"></router-view>
</keep-alive>
<router-view v-if="!$route.meta.keepAlive"></router-view>
이렇게 해서 keep-alive 를 사용 합 니 다.그리고 전역 main.ts 에 전역 루트 제 어 를 추가 합 니 다.
router.beforeEach((to: Route, from: Route, next: () => void) => {
if (from.meta.keepAlive) {
const $content = document.querySelector('#content');
const scrollTop = $content ? $content.scrollTop : 0;
from.meta.scrollTop = scrollTop;
}
next();
});
간단 합 니 다.떠 날 때 현재 페이지 를 유지 해 야 하 는 지 여 부 를 판단 합 니 다.필요 하 다 면 페이지 메 인 용기 content 의 스크롤 위 치 를 기록 하고 길 을 기록 합 니 다.그리고 유지 되 는 페이지 에 들 어 갈 때마다 스크롤 바 위치 scrollTop 을 읽 고 메 인 용기 의 scrollTop 을 수정 하면 됩 니 다.
public activated() {
const scrollTop = this.$route.meta.scrollTop;
const $content = document.querySelector('#content');
if (scrollTop && $content) {
$content.scrollTop = scrollTop;
}
}
간단 해 보이 네.남 겨 진 문제
1.페이지 마다 스크롤 바 위 치 를 기록 할 수 있 지 않 습 니까?
사실은 그렇지 않 습 니 다.어떤 페이지 는 내부 에 js 상호작용 이 있 습 니 다.예 를 들 어 tab 상호작용,서로 다른 tab,페이지 가 굴 러 갈 수 있 는 높이 가 일치 하지 않 습 니 다.만약 에 페이지 상 태 를 유지 하지 않 고 스크롤 위 치 를 통일 적 으로 기록 하면 스크롤 바 의 위치 가 잘못 될 수 있 습 니 다.
2.activated 라 는 단 계 를 전역 의 main.ts 또는 state 에 쓸 수 있 습 니까?
그런 생각 을 했 지만 지금 으로 선 실현 할 방법 을 찾 지 못 했다.
우선,router 를 통 해 제어 할 수 없다 면 전체 경로 통 제 는 페이지 로 불 러 오기 전에 만 감청 할 수 있 고 페이지 로 불 러 오 는 요 소 를 찾 을 수 없습니다.
일반적인 전역 함수 에 써 서 제어 할 수 있 습 니 다.예 를 들 어 state 를 정의 하고 페이지 가 불 러 올 때 설정 하면 mixins 를 정의 하여 처리 해 야 합 니 다.그러나 이 mixins 에 대해 잘 모 르 기 때문에 어떻게 해 야 할 지 모 르 겠 습 니 다.시간 이 있 으 면 방법 을 찾 아 해결 할 수 있 습 니 다.
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 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에 따라 라이센스가 부여됩니다.