Vue
[Vue] Computed
주니야 공부하자
2023. 12. 22. 15:29
템플릿 표현식 내 코드가 길어거나 복잡할 경우 가독성이 떨어지고 유지보수가 어려워질 수 있습니다.
<span>{{ teacher.lectures.length > 0 ? 'YES' : 'NO' }}</span>
computed
const hasLecture = computed(() => {
return teacher.lectures.length > 0 ? 'YES' : 'NO'
})
일반 함수로도 같은 형태를 만들 수 있지만 computed가 성능면에서 비용이 더 적게 사용됩니다.
함수는 요청할때마다 값을 불러오지만 computed는 한 번 실행되면 캐시에 저장되기 때문에 재요청되었을 때 저장된 데이터가 반환됩니다.
캐시가 다시 저장되는 시점은 computed에 반응형 데이터가 변경되는 시점입니다.
그렇기 때문에 컴포넌트가 재랜더링 될 때에도 computed는 다시 실행되지 않습니다.
computed는 읽기 전용이지만 get()과 set()을 이용하여 쓰기도 가능합니다.
const firstName = ref('홍')
const lastName = ref('길동')
const fullName = computed(() => {
get() {
return firstName.value + ' ' + lastName.value
},
set(newValue) {
[firstName.value, lastName.value] = newValue.split(' ')
}
})
console.log(fullName.value) // 홍 길동
fullName.value = '장 삼봉'
console.log(fullName.value) // 장 삼봉