본문 바로가기
Vue.js

v-if와 v-show의 차이점과 사용 방법

by whoyoung90 2022. 11. 23.
반응형

> VueJS에서 엘리먼트, 컴포넌트 등을 숨기는 방법은?

일반적으로 v-if 와 v-show를 사용한다.

 

> v-if와 v-show의 차이점은?

가장 큰 차이점은 실제 DOM을 그려주느냐의 여부에 따라 차이가 있다!

 

조건에 만족하지 않을 경우

v-ifDOM 영역에 실제로 그려주지 않는(<! - - - >) 방법을 사용하는 반면,
v-show는 단지 css style의 display: none을 사용하여 보여주지만 않는다는 차이가 있다

 

이런 이유로 보여주거나 숨기는 액션이 반복되야 한다면 v-show를 사용하고
그 외의 경우는 v-if를 사용하는 방법이 성능에 더 좋을 것 같다.

 

 

v-if(v-else-if, v-else)

조건에 만족하면 Rendering 되지만

조건의 만족하지 않으면 DOM 레벨에서 제거되며, 모든 감시(Watch등...)도 제거된다.

또한, 컴포넌트라면 인스턴스가 제거되며 이 후 Rendering 할 때 모든 상태가 초기화 된다.

 

v-if는 내부에서 디렉티브 또는 컴포넌트를 많이 사용하는 경우,

특정한 데이터를 따로 가지고 있지 않다면 오류가 발생했을 때 v-if를 사용하는 것이 좋다.

 

ex) 로그인을 실시하여 성공하면 로그아웃 버튼이 생성 될 때, 비동기 처리로 불러온 값 처리의 따라 Rendering을 할 때

 

v-show

v-show는 display:none 처리를 하며 DOM 레벨에서 제거되지 않는 상태에서 내부적인 감시가 일어나므로 주의해야 한다.

 

내부에 디렉티브 또는 컴포넌트가 없고,  변경 빈도가 높은 경우 v-show를 사용하는 것이 제일 좋다.

ex) dialog의 Open/Close 등

 

 

공식문서

 

 

반응형

'Vue.js' 카테고리의 다른 글

PDF 다운로드 기능 구현(html2pdf.js)  (0) 2022.12.15
딥셀렉터(v-deep) 설정하는 방법  (0) 2022.12.13
구글 애널리틱스 적용하기 1편(vue-gtag)  (0) 2022.10.20
Vue 초기 세팅  (0) 2021.08.08

댓글