Vue.js

[Vue.js] 조건부 렌더링

초오오이 2024. 11. 6. 00:04

 


 

 

1. v-if / v-else-if / v-else

<div v-if="type === 'A'">
  A
</div>
<div v-else-if="type === 'B'">
  B
</div>
<div v-else-if="type === 'C'">
  C
</div>
<div v-else>
  A/B/C 아님
</div>

type 값에 따라 조건적으로 어떤 div가 렌더링 될지 지정할 수 있다.

template 엘리먼트에 사용 가능하다.

v-for 와 같이 사용하는 것을 피해야 한다.(참고: https://ko.vuejs.org/style-guide/rules-essential#avoid-v-if-with-v-for)

 

2. v-show

<h1 v-show="ok">안녕!</h1>

display css 속성만 전환해서 엘리먼트를 조건부로 나타낼 수 있다. => 항상 렌더링되고 DOM에 남는다.

template 엘리먼트에는 사용할 수 없다.

 

 

3. v-if vs v-show

v-if는 전환 비용이 더 높고, v-show는 초기 렌더링 비용이 더 높다.

=> 조건이 자주 변경되는 경우에는 v-show를, 조건이 고정된 경우에는 v-if를 사용하는 것이 좋다.

 

 

 

참고: https://ko.vuejs.org/guide/essentials/conditional.html#conditional-rendering