truthy
값을 반환하는 경우에만 렌더링<template>
<p v-if="isShow">true</p>
</template>
<script>
export default {
name: 'App',
data () {
return { isShow: true }
},
}
</script>
<template>
<button @click="showElement">Click</button>
<p v-if="isShow">첫번째 요소</p>
<p v-else>두번째 요소</p>
</template>
<script>
export default {
name: 'App',
data () {
return { isShow: true }
},
methods: {
showElement() {
this.isShow = !this.isShow;
}
}
}
</script>
<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>
v-show
가 있는 엘리먼트는 항상 렌더링되고 DOM에 남아 있다.v-show
는 display
CSS 속성만 전환한다.<template>
<h1 v-show="isShow">제목</h1>
</template>
<script>
export default {
name: 'App',
data () {
return { isShow: false }
},
methods: {
showElement() {
this.isShow = !this.isShow;
}
}
}
</script>
v-show
를 false
로 지정하였더니 h1
엘리먼트가 display: none
으로 지정되어 있다.v-if
v-if
의 값이 false
이면 아무 작업도 수행하지 않고, true
가 될 때까지 렌더링되지 않는다.v-show
v-if
는 전환 비용이 높고, v-show
는 초기 렌더링 비용이 높다.v-show
를, 실행 중에 조건이 변경되지 않는 경우 v-if
를 사용하는 것이 좋다.