Vue/Vue.js 문법
Vue-js 문법 - 조건부 렌더링
IT Blue
2021. 7. 14. 15:11
v-if
- v-if 디렉티브는 조건에 따라 블록을 렌더링할 때 사용
- 블록은 디렉티브의 표현식이 true 값을 반환할 때만 렌더링
<h1 v-if="awesome">Vue is awesome!</h1>
<!-- v-else와 함께 “else 블록”을 추가하는 것도 가능 -->
<h1 v-if="awesome">Vue is awesome!</h1>
<h1 v-else>Oh no 😢</h1>
예제
<!-- App.vue -->
<template>
<button @click="handler">
Click me!
</button>
<h1 v-if="isShow">
Hello?!
</h1>
<h1 v-else>
Good~
</h1>
</template>
<script>
export default {
data() {
return {
isShow: true
}
},
methods: {
handler() {
this.isShow = !this.isShow
}
}
}
</script>
코드 이해하기
- 처음에는 <Button> 태그 (Click me!)와 <h1> 태그 (Hello?!)가 화면에 출력
- 버튼 (Click me!)을 누르면 메소드 handler()가 동작
- hendler() 메소드는 isShow 데이터가 true면 false, false면 true로 변경
- isShow가 false 이므로 (Hello?!)는 (Good~)으로 변경
결론: 버튼을 누르면 (Hello?!)일때는 (Good~), (Good~)일때는 (Hello?!)로 변경됨
v-show
- v-if 디렉티브와 거의 동일한 디렉티브
- 차이점은 v-show 를 쓴 엘리먼트의 경우, 항상 렌더링 되어 DOM에 남아있음
- v-show 는 단순히 엘리먼트의 CSS display: none 속성만을 전환
- v-show 는 <template> 엘리먼트를 지원하지 않으며, v-else 와 함께 사용이 불가능함
자주 전환해야 한다면 v-show를 사용하는 게 좋고, 런타임 시 조건이 변경되지 않는다면 v-if를 사용하는 게 더 낫다