Vue

Vue 랜더링 문법 (v-for, v-if, v-show)

심나라 2022. 5. 11. 14:40
728x90

1. 리스트 랜더링 (v-for)

  - 형식 : v-for="(item, index) in items" 

  - items : 데이터 배열

  - v-for를 통해 배열을 하나씩 읽어와서 배열의 각 아이템을 item으로,

    배열의 현재 index를 index로 반환

<table>
    <thead>
        <tr>
            <td>이름</td>
            <td>제목</td>
        </tr>
    </thead>
    <tbody>
        <tr :key="index" v-for="(content, index) in contentList">
            <td>{{content.name}}</td>
            <td>{{content.title}}</td>
        </tr>
    </tbody>
</table>

<script>
    export default {
        data() {
            return {
                contentList: [
                    {"name":"홍길동1", "title":"테스트 글1"},
                    {"name":"홍길동2", "title":"테스트 글2"}
                ]
            };
        }
    }
</script>

 

2. 랜더링 문법(v-if)

  - v-if 디렉티브 표현식

<h1 v-if="boolValue">
    boolValue가 true 이면, h1 블록이 화면에 보임, 
    boolValue가 false 이면 h1 블록이 보이지 않음
</h1>

  - v-else 디렉티브 표현식

<h1 v-if="boolValue">boolValue가 true 이면, 현재 블록이 화면에 보임</h1>
<h1 v-else>boolValue가 true 가 아니면 현재 블록이 화면에 보임</h1>

  - v-else-if 디렉티브 표현식

<h1 v-if="TypeValue === 'A'">TypeValue가 'A' 이면, 현재 블록이 화면에 보임</h1>
<h1 v-else-if="TypeValue === 'B'">TypeValue가 'B' 이면, 현재 블록이 화면에 보임</h1>
<h1 v-else>TypeValue가 'A', 'B' 가 아니면, 현재 블록이 화면에 보임</h1>

 

3. 랜더링 문법(v-show)

  - v-show 디렉티브 표현식

<h1 v-show="boolValue">boolValue가 true 이면 현재 블록이 화면에 보임</h1>

 

4. v-if 와 v-show 차이점

v-if 와 v-show는 비슷해 보이지만 내부적으로 랜더링 하는 방식에 차이가 있습니다.

v-if는 조건이 만족할 경우 html 블록을 생성하고, 조건에 맞지 않으면 html 블록은 삭제 됩니다.

v-show는 조건 여부와 상관 없이 무조건 html 블록을 생성하고, 조건이 맞으면 css의 display를 이용하여 화면에 보여주고, 조건이 맞지 않으면 숨김 처리 합니다. (조건과 상관 없이 무조건 랜더링 됨)

728x90