→ 템플릿 내 표현식은 매우 편리하지만, 간단한 작업을 위한 것이다.
const author = reactive({
name: 'John Doe',
books: [
'Vue 2 - Advanced Guide',
'Vue 3 - Basic Guide',
'Vue 4 - The Mystery'
]
})
author
가 이미 책을 가지고 있는지의 여부에 따라, 다른 메시지를 표시하고 싶다면 다음과 같이 작성해야 한다.
<p>책을 가지고 있다:</p>
<span>{{ author.books.length > 0 ? 'Yes' : 'No' }}</span>
→ 따라서, 반응형 데이터를 포함하는 복잡한 논리의 경우, 계산된 속성을 사용하는 것이 좋다!
<script setup>
import { reactive, computed } from 'vue'
const author = reactive({
name: 'John Doe',
books: [
'Vue 2 - Advanced Guide',
'Vue 3 - Basic Guide',
'Vue 4 - The Mystery'
]
})
// 계산된 ref
**const publishedBooksMessage = computed(() => {
return author.books.length > 0 ? 'Yes' : 'No'
}**)
</script>
<template>
<p>책을 가지고 있다:</p>
<span>{{ **publishedBooksMessage** }}</span>
</template>
ref
는 템플릿에서 자동으로 언래핑되므로, 템플릿 표현식에서 .value
없이 참조할 수 있다.