vue 에서 keep-alive,activated 에 대한 연구 와 사용 에 대한 상세 한 설명

회사 의 한 프로젝트 를 수정 할 때 activated 라 는 것 을 발 견 했 습 니 다.계속 의 심 스 러 웠 습 니 다.전에 도 별로 사용 하지 않 았 습 니 다!홈 페이지 의 라 이 프 사이클 은 그것 도 말 한 적 이 없 잖 아!라 이 프 사이클 은 create mount update 와 destory 라 는 몇 개의 동쪽 이 잖 아 요.왜 activate 가 더 생 겼 어 요?
아무리 생각해 도 이해 가 안 돼 서 도 모 에 게 물 어보 고 문 서 를 찾 아 봤 어 요!문득 깨 달 았 습 니 다.이 동쪽 은 keep-alive 라 는 동쪽 과 결합 하여 사용 한 것 이 었 습 니 다.아래 에 기록 하 겠 습 니 다.
keep-alive
동적 구성 요 소 를 패키지 할 때 활성 화 된 구성 요소 인 스 턴 스 를 캐 시 합 니 다.파괴 하 는 것 이 아 닙 니 다.이것 은 추상 적 인 구성 요소 입 니 다.자신 은 DOM 요 소 를 과장 하지 않 고 부모 구성 요소 체인 에 나타 나 지 않 습 니 다.
에 포 함 된 구성 요소 가 캐 시 됩 니 다.
쓸데없는 말 은 그만 하고 예 를 들 자.
우 리 는 현재 두 개의 하위 구성 요소 conpoment 1,copement 2 를 만 들 고 있 습 니 다.그 내용 은 다음 과 같 습 니 다.

<template>
 <div class="wrapper">
  <ul class="content"></ul>
  <button class="add" id="add" @click="add">     </button>
 </div>
</template>

<script>
export default {
 data() {
  return {};
 },
 methods: {
  add() {
   let ul = document.getElementsByClassName("content")[0]; 
   let li = document.createElement("li");
   li.innerHTML = "       ";
   ul.appendChild(li);   
  }
 }
};
</script>
<style >
</style>
코드 는 설명 할 필요 가 없 죠?단 추 를 누 르 면 l 동적 에 li 요 소 를 추가 하 는 것 입 니 다.
이어서 우 리 는 루트 에 등록 을 하고 다시 APP.vue 로 돌아 가서 설정 을 수정 합 니 다

<template>
 <div id="app">
  <keep-alive>
   <router-view />
  </keep-alive>
</template>
이렇게 하면 우 리 는 우리 가 길 을 바 꿀 때,우리 가 이전에 추가 한 하위 요 소 를 다시 거기에 저장 하 는 것 을 발견 할 수 있 을 것 이다.

그렇다면 모든 페이지 가 캐 시 되 었 습 니 다.캐 시 없 이 다시 불 러 와 야 하 는 경우 v-for 를 통 해 이 루어 질 수 있 습 니 다.물론 우 리 는 루트 에 키 값 을 설정 해서 구성 요소 에 캐 시가 필요 한 지 여 부 를 판단 할 수 있 습 니 다.아래 와 같이

//index.js
{
   path: '/1',
   name: 'components1',
   component: Components1,
   meta: {
    keepAlive: true  //      
   }
  },
  {
   path: '/2',
   name: 'components2',
   component: Components2,
   meta: {
    keepAlive: false
   }
  },
그리고 저희 App.vue 에 서 는 keepAlive 값 만 판단 하면 됩 니 다.

 <div id="app">
  <keep-alive>
   <router-view v-if="$route.meta.keepAlive" />
  </keep-alive>
  <router-view v-if="!$route.meta.keepAlive" />
</template>
이 때 우 리 는 페이지 에 하위 요 소 를 추가 하고 길 을 바 꾸 면 components 1 의 구성 요소 만 캐 시 되 어 있 음 을 발견 할 수 있 습 니 다.
activated
먼저 이 라 이 프 사이클 고 리 를 말씀 드 리 겠 습 니 다.홈 페이지 에 서 는 서버 에서 렌 더 링 하 는 동안 호출 되 지 않 는 다 고 합 니 다.
마 운 트 후 업데이트 전에 호출 된 것 입 니 다.그러나 이 구성 요소 에 캐 시 를 사용 하지 않 았 다 면에 패키지 되 지 않 았 다 면 activated 는 작 동 하지 않 습 니 다.우리 가 직접 해 보면 알 수 있 을 거 야.

//components1 
 created() {
  console.log("1  created    ");
 },
 activated() {
  console.log("1  activated    ");
 },
 mounted() {
  console.log("1  mounted    ");
 }

//components2 
 created() {
  console.log("2  created    ");
 },
 activated() {
  console.log("2  activated    ");
 },
 mounted() {
  console.log("2  mounted    ");
 }
우 리 는 두 구성 요소 에서 갈고리 함수 의 실행 상황 을 각각 출력 했다.우 리 는 볼 수 있다.

components 1 을 실행 할 때 activated 갈고리 함 수 를 실 행 했 지만 components 2 는 실 행 했 습 니 다.components 2 는에 패키지 되 지 않 았 기 때문에 이 갈고리 함 수 를 활성화 하지 않 습 니 다.
우리 가 다시 길 을 바 꾸 었 을 때 또 신기 한 곳 을 발견 했다.

구성 요소 1 에 서 는 activated 갈고리 함수 만 실행 하고 구성 요소 2 에 서 는 생 성 및 마 운 트 된 갈고리 함 수 를 모두 실행 합 니 다.
이것 이 캐 시 때 문 입 니 다.components 는 구성 요 소 를 캐 시 했 기 때문에 다시 만 들 거나 마 운 트 하지 않 습 니 다.
간단하게 말하자면 activated()함 수 는 한 페이지 가 활성 화 된 갈고리 함수 로 페이지 에 들 어가 자마자 터치 합 니 다.
따라서 구성 요소 캐 시 를 사용 할 때 전환 할 때마다 요청 을 보 내 려 면 요청 함 수 를 activated 에 써 야 합 니 다.created 나 mounted 에 쓰 면 이 구성 요 소 를 처음 불 러 올 때 만 작 동 합 니 다.
이상 의 vue 에서 keep-alive,activated 의 연구 와 사용 에 대한 상세 한 설명 은 바로 편집장 이 여러분 에 게 공유 한 모든 내용 입 니 다.여러분 께 참고 가 되 고 저희 도 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기