Vue 내장 구성 요소 keep-alive 사용 예
5086 단어 vue내장 구성 요소keep-alive
작용
구성 요소 전환 과정에서 상태를 메모리에 유지하여 DOM 렌더링을 반복하지 않도록 하고 로드 시간과 성능 소모를 줄이며 사용자 환경을 향상시킵니다.
1. keep-alive 사용법
구성 요소가
Props:
include - 문자열 또는 정규 표현식.이름이 일치하는 구성 요소만 캐시됩니다.
exclude - 문자열 또는 정규 표현식.이름이 일치하는 구성 요소는 캐시되지 않습니다.
max - 숫자.최대 몇 개의 구성 요소 실례를 캐시할 수 있습니까?
구성 요소를 제거하고 싶으면 다른 것이 캐시됩니다. exlucde 속성을 사용할 수 있습니다.
<keep-alive :max="10">
<component :is="view"></component>
</keep-alive>
사용 예:
1. 모든 페이지를 캐시합니다.
<keep-alive>
<router-view></router-view>
<!-- -->
</keep-alive>
2. 기준 캐시 섹션 페이지
( 홈 API )
<template>
<div id="app">
// 1. name newsList productList
<keep-alive include='newsList,productList'>
<router-view/>
</keep-alive>
// 2. name test
<keep-alive exclude='test'>
<router-view/>
</keep-alive>
</div>
</template>
<script>
export default {
name: 'App'
}
</script>
참고:캐시 상태가 필요한 구성 요소의script 부분에 name 속성을 추가해야 합니다.keep-alive 캐시 상태를 사용하는 구성 요소가 없으면name 속성을 쓰지 않아도 됩니다.그러나keep-alive를 사용하여 이 구성 요소 상태를 캐시하면, 이 구성 요소는 반드시 이 속성이 있어야 합니다.그리고 이 속성의 값은 대소문자를 포함하여 라벨에 있는include 속성의 값과 완전히 일치해야 합니다.제품 목록으로vue 구성 요소를 예로 들다
<template>
<!-- productList html -->
</template>
<script>
export default {
name: "productList", // keep-alive , 。
data(){
return {}
}
</script>
3. vue-router와 결합하여 캐시 부분 페이지
export default new Router({
mode: 'history',
routes: [
{
path: '/',
name: 'home',
component: Home,
children: [
{
path: 'products',
name: 'products',
component: products,
meta: {
keepAlive: true //
}
},
{
path: 'newsDetails',
name: 'newsDetails',
component: newsDetails,
meta: {
keepAlive: false //
}
}
]
}
]
})
앱에서안쪽
<template>
<div id="app">
<keep-alive>
<router-view v-if="$route.meta.keepAlive"></router-view>
</keep-alive>
<router-view v-if="!$route.meta.keepAlive"></router-view>
</div>
</template>
<script>
export default {
name: 'App'
}
</script>
2. keep-alive 생명주기
keep-alive에 생성된 구성 요소를 포함하여 두 개의 생명주기의 갈고리가 더 많습니다:activated와deactivated.
1. activated
keep-alive 구성 요소가 활성화될 때 호출됩니다.
구성 요소가 처음 렌더링될 때 호출되고, 캐시 구성 요소가 활성화될 때마다 호출됩니다.
처음으로 캐시 루트/구성 요소에 들어갑니다. mounted 뒤에 before Route Enter 수위가next의 리셋 함수에 전송되기 전에 호출합니다.
페이지가 처음 들어왔을 때 갈고리가 터치하는 순서는created->mounted->activated
구성 요소가 캐시되었기 때문에 캐시 루트/구성 요소에 다시 들어갈 때 이 갈고리를 터치하지 않습니다.
beforeCreate created beforeMount mounted는 트리거되지 않습니다.
2. deactivated
keep-alive 구성 요소가 비활성화될 때 호출됩니다.
keep-alive를 사용하면 before Destroy (구성 요소 삭제 전 갈고리) 와destroyed (구성 요소 삭제) 를 호출하지 않습니다. 구성 요소가 삭제되지 않아 캐시되었습니다.
이 갈고리는 before Destroy의 대체로 볼 수 있습니다. 만약 구성 요소를 캐시했다면, 구성 요소를 삭제할 때 일을 해야 합니다. 이 갈고리에 넣으셔도 됩니다.
참고:
1,keep-alive를 사용하면 데이터를 메모리에 보존합니다. 페이지에 들어갈 때마다 최신 데이터를 얻으려면activated 단계에서 데이터를 얻고 원래created 갈고리 함수에서 데이터를 가져오는 작업을 수행해야 합니다.
2. 구성 요소가keep-alive에 감싸여 있을 때만 이 두 생명주기 함수가 호출됩니다. 정상적인 구성 요소로 사용하면 호출되지 않습니다. 그리고 2.1.0 버전 이후에exclude를 사용하여 제거한 후에keep-alive에 싸여도 이 두 갈고리 함수는 호출되지 않습니다!
3. 상기 두 개의 갈고리 함수는 서버 쪽에서 렌더링하는 동안 호출되지 않습니다.
공식 문서 참조:cn.vuejs.org/v2/api/#kee…
이상은 바로 Vue 내장 구성 요소keep-alive의 사용 예시에 대한 상세한 내용입니다. Vue 내장 구성 요소keep-alive에 대한 더 많은 자료는 저희 다른 관련 글을 주목해 주십시오!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 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에 따라 라이센스가 부여됩니다.