최대 1 분 소요

조건부 렌더링


V-if

v-if는 조건에 따라 블록을 렌더링하기 위해 사용한다.

<p v-if="속성명">출력할 구문</p>

이렇게 속성명을 부여하고

 var app = new Vue({
     el: '#app',
     data: {
     	속성명: true
     }
 })

속성명을 true로 할 경우, 렌더링되고 false일 경우 렌더링이 중지된다.

<div id="app">
    <p v-if="seen">이제 나를 볼 수 있어요</p>
</div>
var app = new Vue({
    el: '#app',
    data: {
        seen: true
    }
})

vue6_1


v-else

v-else를 사용하면 else 블록을 나타낼 수 있다.

<div id="app">
    <p v-if="show">Yes</p>
    <p v-else>No</p>
    <button @click="toggleShow">Toggle</button>
</div>
var app = new Vue({
    el: '#app',
    data: {
        show: true
    },
    methods:{
        toggleShow(){ 
            this.show = !this.show; // 메소드로 토글의 형태를 만들어줌. 
        }
    }
})

toggleShow메소드 실행전
vue6_2

toggleShow메소드 실행후
vue6_3


V-show

v-show는 v-if와 기능이 거의 동일하다.

<div id="app">
    <div v-show="show">Yes</div>
    <button @click="Toggle">Toggle</button>
</div>
var app = new Vue({
    el: '#app',
    data: {
        show: false
    },
    methods:{
        Toggle(){
            this.show = !this.show;
        }
    }
})

Toggle메소드 실행전
vue6_4

Toggle메소드 실행후
vue6_2


v-if와 v-show의 차이

v-if는 조건 블록이 처음으로 참이 될때까지 렌더링 되지 않는다.

v-show는 v-if에 비해 훨씬 단순하여 CSS 기반 토글만으로 초기 조건에 관계없이 요소가 항상 렌더링 된다.

일반적으로 v-if는 토글 비용이 높고, v-show는 초기 렌더링 비용이 높다. 매우 자주 바꾸기를 원한다면 v-show를, 런타임 시 조건이 바뀌지 않으면 v-if를 권장한다.

태그:

카테고리:

업데이트: