Vue

2021-11-23 (Vue.js - 템플릿 문법(3))

BSYeop 2021. 11. 23. 17:12

v-if, v-show, v-for를 사용해보자

1. v-if, v-show의 공통점

 - 조건에 따라 블록을 렌더링할 때 사용

 - 블록은 디렉티브의 표현식이 true 값을 반환할 때만 렌더링

2. v-if, v-show의 차이점

 - v-show를 쓴 엘리먼트의 경우, 항상 렌더링되어 DOM에 남아 있음

 - v-show는 엘리먼트의 CSS의 display 속성만을 전환

 - v-show는 <template>엘리먼트 지원X

3. v-if의 조건부 그룹

 - 배열을 기반으로 리스트를 렌더링

 - item in items 형태로 특별한 문법이 필요(items는 원본 데이터 배열, item은 반복되는 배열 엘리먼트의 별칭)

3. v-for

 - 

<template>
  <!-- v-if -->
  <div>
    <h2>당신의 나이는 {{age}}입니다</h2>
    <h3 v-if="age > 18">당신은 어른입니다.</h3>
    <h3 v-else-if="age > 13 && age<= 18">당신은 청소년입니다</h3>
    <h3 v-else>당신은 어른이 아닙니다.</h3>
  </div>
  <!-- v-show -->
  <div>
    <h2 v-if="display">(v-if)보입니다!!</h2>
    <h2 v-show="display">(v-show)보입니다!!</h2>
  </div>
  <!-- v-for -->
  <div>
  <h2 v-for="(animal, index) in animals" :key="index">{{animal}} 인텍스는 :: {{index}} </h2>
  <ul>
    <li v-for="(user, index) in users" :key="index">
      이름은 {{user.name}} 직업은 {{user.job}}
      <p v-for="item in user.skill" :key="item">{{item}}</p>
    </li>
  </ul>
  </div>
   <!-- 조건부 렌더링 -->
   <div>
   <template v-for="(animal, index) in animals" :key="index">
     <h2 v-if="animal !== 'monkey'">{{animal}} 인텍스는 :: {{index}}</h2>
   </template>
   </div>
</template>

<script>


export default {
  name: 'App',
  data(){
    return {
      age: 14,
      display: false,
      animals: ["monkey", "rat", "dog","lion"],
      users: [
        {name: 'scalper', job:'devleoper', gender:'male', skill:["html", "css", "javascript"]},
        {name: 'john', job:'designer', gender:'male', skill:["html", "css", "javascript"]},
        {name: 'chulsu', job:'pm', gender:'female', skill:["html", "css", "javascript"]}
      ]
    }
  }
}
</script>

<style>
#app {
  font-family: Avenir, Helvetica, Arial, sans-serif;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-align: center;
  color: #2c3e50;
  margin-top: 60px;
}
input {
  font-size: 20px;
}
</style>

결과화면

 1. v-if

 

2. v-show(개발자 도구로 확인)

 

3. v-for

 

4. 조건부 렌더링(그룹)

참고

https://v3.ko.vuejs.org/guide/conditional.html#v-else

https://kr.vuejs.org/v2/guide/list.html

https://www.youtube.com/watch?v=ibYCwlEmILI&list=PLpJDjPqxGWGrkyxxavs2oW-SK3v_8VLwa&index=4