Self-Study/Vue

[Vue] keep-alive

Raadian 2022. 9. 13. 14:53

References

https://vuejs.org/guide/built-ins/keep-alive.html

https://ddolcat.tistory.com/1655

https://swoo1226.tistory.com/165

https://v3.ko.vuejs.org/api/built-in-components.html#transition-group

 

 

서론

Vue의 라이프 사이클에는 Create, Mount, Update, Destroy 총 4가지로 분류되어 자원을 관리한다.

문제는 이 과정에서 비활성화한 캐시된 컴포넌트 인스턴스를 제거하기 때문에 특정 컴포넌트로 재요청을 할 경우 원하는 데이터가 반영되지 않아 조회에 이상이 생길 수 있다.

따라서, 이에 대한 대응책이 필요한데 바로 keep-alive 기능이다.

 

 

keep-alive란?

keep-alive는 캐시된 컴포넌트를 reload 하는 기능으로, 컴포넌트가 keep-alive 태그 내에서 전환되면 activateddeactivated 라이프 사이클 훅이 호출된다.

이러한 이유로 컴포넌트 상태를 유지하거나 다시 렌더링하지 않을 때 유용하게 사용할 수 있다.

<!-- 기본 -->
<keep-alive>
  <component :is="view"></component>
</keep-alive>

<!-- 여러 조건부 자식들 -->
<keep-alive>
  <comp-a v-if="a > 1"></comp-a>
  <comp-b v-else></comp-b>
</keep-alive>

<!-- `<transition>`과 함께 사용 -->
<transition>
  <keep-alive>
    <component :is="view"></component>
  </keep-alive>
</transition>

 

activated

keep-alive활성화될 때 자동으로 호출되는 기능으로, 재활성화 할 때에도 직접 호출하여 작동할 수 있다.

activated() {
	... 재활성화 시킬 구현문
}

 

deactivated

keep-alive가 비활성화될 때 자동으로 호출되는 기능이다.