[Vue.js] Computed 속성

2025. 1. 20. 10:00·Frondend/Vue.js

Intro

회사에서 프로젝트를 진행하며 프론트엔드, 벡엔드 구분없이 작업을 하던 중 'Vue.js의 Computed 와  Method 속성의 차이가 정확하게 뭐지? 둘 다 반복적인 코드들의 중복 제거를 위해 있는거 아닌가? 어떤 차이가 있지?' 라는 생각을 가지고 있어서, 정리를 해볼려 한다.

computed 속성

정의

computed 속성은 Vue 인스턴스에서 종속성을 기반으로 계산된 속성을 정의합니다. data 속성이나 다른 computed 속성에 의존하여 값을 자동으로 계산하며, 캐싱(caching) 기능이 있어 종속된 값이 변경될 때만 다시 연산합니다.

특징

  • 종속성이 변하지 않는 한 계산된 값을 재사용 합니다.
  • 종속성이변하면 자동으로 다시 계산하여 캐싱합니다.
  • 복잡한 로직이나 다수의 변수를 조합한 값을 필요로 할 때 유용합니다.

예제

name 또는 age가 변경이 있을 때만 다시 동작하며, 변경되지 않고 재호출 되면 캐싱되어 있던 값을 반환합니다.

<script>
  const name = ref('JJuuuunn');
  const age = ref('30');

  const info = computed(() => {
    return `${name.value}의 나이는 ${age.value}`;
  })
</script>

<template>
  <p>정보 : {{ info }}</p>
</template>

Method 속성

정의

Vue 인스턴스에 정의된 메서드로, 특정 동작이나 값을 반환하는 함수로써, 호출할 때마다 항상 새로운 결과를 계산합니다.

특징

  • 캐싱되지 않으며 호출할 때마다 새로 실행됩니다.
  • 비동기 작업이나 이벤트 처리 로직을 포함할 수 있습니다.
  • 템플릿에서 함수처럼 호출해야 합니다.

예제

info() 는 호출할 때마다 새로운 결과를 반환하며 캐시 되지 않습니다.

<script setup>
  const name = ref("JJuuuunn");
  const age = ref(30);

  function info() {
    return `$(name.value)의 나이는 ${age.value}`;
  }
</script>

<template>
  <p>info: {{ info() }}</p>
</template>

정리

구분 Computed Method
캐싱 캐싱이 적용되어 종속된 데이터가 변하지 않으면 기존 계산 결과를 재사용 호출할 때마다 함수를 실행하여 결과를 반환
호출 방식 속성처럼 접근 가능 ( this.info ) 함수처럼 호출 필요 ( this.info() )
사용 목적 데이터 기반으로 계산된 값이 자주 재사용될 때 데이터를 사용하여 매번 새로운 값을 계산하거나, 비동기 작업과 같은 추가 로직을 처리할 때

 

반응형

'Frondend > Vue.js' 카테고리의 다른 글

[Vue.js] 라이브러리 VueUse  (0) 2025.02.01
[Vue.js] Vue.js 란?  (0) 2025.01.28
[Vue.js] 렌더링 과정 중 데이터 바인딩이 오류로 렌더링 중단  (1) 2025.01.15
[Vue.js] Router params, query, state  (1) 2025.01.09
[Vue.js] Options API vs Composition API  (0) 2024.10.23
'Frondend/Vue.js' 카테고리의 다른 글
  • [Vue.js] 라이브러리 VueUse
  • [Vue.js] Vue.js 란?
  • [Vue.js] 렌더링 과정 중 데이터 바인딩이 오류로 렌더링 중단
  • [Vue.js] Router params, query, state
JJuuuunn
JJuuuunn
  • JJuuuunn
    JJuuuunn
    JJuuuunn
  • 전체
    오늘
    어제
    • 분류 전체보기 (70)
      • Backend (7)
        • Java (7)
      • Frondend (48)
        • Vue.js (12)
        • JavaScript (21)
        • Css (1)
      • Infra (0)
      • Git (2)
      • CS (5)
        • DataBase (0)
        • Network (2)
        • OS (0)
        • Algorithm (0)
      • 리뷰 (5)
        • 강의 (1)
        • Books (4)
      • ETC (3)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    Watch
    깊은 감시
    렌더링
    혼공컴운
    VUE
    객체
    frontend
    신세계i&c
    Network
    자바스크립트
    혼자 공부하는 컴퓨터구조+운영체제
    axios
    HTML
    javascript
    이벤트
    자바
    KDT
    Vue.js
    Java
    API
  • 최근 댓글

  • 최근 글

  • 반응형
  • hELLO· Designed By정상우.v4.10.1
JJuuuunn
[Vue.js] Computed 속성
상단으로

티스토리툴바