[Vue] 조건부 렌더링(Conditional Rendering)

오리통통·2024년 11월 5일

Vue

목록 보기
4/11

📚 이번 포스팅에서는 조건부 렌더링에 대해서 자세하게 알아보도록 하자.

1. v-if

표현식 값의 true/false를 기반으로 요소를 조건부로 렌더링

2. v-show

표현식 값의 true/false를 기반으로 요소의 가시성(visibility)을 전환

3. v-if vs v-show

1) v-if

  • 초기 조건이 false인 경우 아무 작업도 수행하지 않음

  • 초기 렌더링 비용이 낮지만, 토글 비용이 높음

  • 조건이 자주 변경되지 않을 때 유용

2) v-show

  • 초기 조건에 관계없이 항상 렌더링

  • 초기 렌더링 비용이 낮지만, 토글 비용이 낮음

  • 요소가 자주 토글될 때 유용

즉, 콘텐츠를 자주 전환해야 하는 경우에는 v-show를, 실행 중에 조건이 변경되지 않는 경우에는 v-if를 권장한다.

4. 예시

<body>
    <div id="app">
        <button @click="toggleVisibility">Toggle</button>
        
        <p v-if="isVisible">This is controlled by v-if</p>
        <p v-show="isVisible">This is controlled by v-show</p>
    </div>

    <script>
        const { createApp, ref } = Vue

        createApp({
            setup() {
                const isVisible = ref(true)

                const toggleVisibility = () => {
                    isVisible.value = !isVisible.value
                }

                return {
                    isVisible,
                    toggleVisibility
                }
            }
        }).mount('#app')
    </script>
</body>

위 코드를 실행시켜서 toggle 버튼을 눌러보면

이렇게 사라지는 것을 볼 수 있다.

하지만 개발자 도구를 열고 Elements 탭을 확인하면

v-if 요소는 DOM에서 실제로 사라지고 나타나는 것을 볼 수 있고

v-show 요소는 항상 DOM에 존재하며 style 속성만 변경되는 것을 확인할 수 있다!!

정리를 해보자면 v-if는 조건에 따라 요소를 완전히 추가/제거하는 반면에 v-show는 CSS를 사용하여 요소의 가시성만 토글한다는 것을 확인할 수 있다.

profile
초보 개발자의 좌충우돌 성장기

0개의 댓글