Vue 내장 구성 요소 keep-alive 사용 예

keep-alive는 Vue에 내장된 구성 요소 중 하나로 구성 요소의 상태를 유지하거나 다시 렌더링을 피하는 데 사용됩니다.
작용
구성 요소 전환 과정에서 상태를 메모리에 유지하여 DOM 렌더링을 반복하지 않도록 하고 로드 시간과 성능 소모를 줄이며 사용자 환경을 향상시킵니다.

1. keep-alive 사용법


동적 구성 요소를 감싸면 비활성 구성 요소 인스턴스가 제거되지 않고 캐시됩니다.
과 비슷하게 는 추상적인 구성 요소입니다. 그 자체는 DOM 요소를 렌더링하지 않고 구성 요소의 부모 구성 요소 체인에 나타나지 않습니다.
구성 요소가 에서 전환되면,activated와deactivated 두 생명주기 갈고리 함수가 실행됩니다.
Props:
include - 문자열 또는 정규 표현식.이름이 일치하는 구성 요소만 캐시됩니다.
exclude - 문자열 또는 정규 표현식.이름이 일치하는 구성 요소는 캐시되지 않습니다.
max - 숫자.최대 몇 개의 구성 요소 실례를 캐시할 수 있습니까?
  • include & exclude
  • 일부 구성 요소의 상태만 캐시하려면include 속성을 사용할 수 있습니다.
    구성 요소를 제거하고 싶으면 다른 것이 캐시됩니다. exlucde 속성을 사용할 수 있습니다.
  • max
  • 최대 몇 개의 구성 요소 실례를 캐시할 수 있습니까?이 숫자가 도착하면 새 실례가 만들어지기 전에 캐시된 구성 요소 중 가장 오랫동안 접근하지 않은 실례가 삭제됩니다.
    
    <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에 대한 더 많은 자료는 저희 다른 관련 글을 주목해 주십시오!

    좋은 웹페이지 즐겨찾기