v-if
v-if 를 사용하여 분기 처리를 할 수 있다.
<template>
<div>
<h2 v-if="visible">Hello Vue3!</h2>
<h2 v-else>false 입니다!</h2>
<button v-on:click="visible = !visible">toggle</button>
<hr />
<button v-on:click="type = 'A'">A</button>
<button v-on:click="type = 'B'">B</button>
<button v-on:click="type = 'C'">C</button>
<button v-on:click="type = 'D'">D</button>
<h2 v-if="type === 'A'">A입니다.</h2>
<h2 v-else-if="type === 'B'">B입니다.</h2>
<h2 v-else-if="type === 'C'">C입니다.</h2>
<h2 v-else>A, B, C가 아닙니다.</h2>
</div>
</template>
<script>
import { ref } from 'vue';
export default {
setup() {
const visible = ref(true);
const type = ref('A');
return { visible, type };
},
};
</script>
<style></style>
v-if로 분기를 해서 조건에 맞게 렌더링하는 코드를 위와 같이 작성할 수 있다.
여러개의 html 요소를 연결하고 싶다면
templaate을 사용할 수 있다.
<template v-if="visible">
<h1>Title</h1>
<p>Paragraph 1</p>
<p>Paragraph 2</p>
</template>
위와 같이 template으로 묶어주는 느낌.
v-show
<h1 v-show="ok">Title 입니다.</h1>
<button v-on:click="ok = !ok">ok</button>
위와 같이 사용하는 것은 display:none 기법으로 숨기고 보여주고를 구현하는 것임.
v-if는 제거되고 생성되는 느낌임. 초기에 조건이 맞지 않으면 렌더링 되지 않다가 조건이 참이 되면 렌더링 됨.
v-show 는 일단 렌더링 되었다가 조건이 참이면 보여주고 거짓이면 숨김.
그러므로 v-if는 전환 비용이 높으나 초기 렌더링 비용은 낮음 v-show는 전환 비용은 낮으나 초기 렌더링 비용이 높음
조건이 자주 변경된다면 v-show 자주 변경되지 않는다면 v-if
- v-if 와 v-for는 같이 쓰지 않는다. template으로 구분해서 사용할 것 이전 강의 자료 참조.