Vue.js 계산된 속성에 대한 간단한 가이드

Vue.js는 computed properties라는 강력한 기능을 제공하는데, 이를 통해 계산을 수행하고 구성 요소의 상태에서 데이터를 파생할 수 있습니다. Computed properties는 템플릿 코드를 깔끔하고 읽기 쉽게 유지하면서 반응형 데이터 속성을 기반으로 복잡한 계산이나 변환을 수행하려는 경우에 특히 유용합니다.

이 가이드에서는 Vue.js에서 계산된 속성의 기본 사항, 메서드와의 차이점, 그리고 Vue 구성 요소에서 계산된 속성을 효과적으로 사용하는 방법을 살펴보겠습니다.

계산된 속성이란?

계산된 속성은 Vue 구성 요소의 computed 객체 내에 정의된 함수입니다. 메서드와 달리 계산된 속성은 종속성에 따라 캐시됩니다. 즉, 종속성 중 하나가 변경될 때만 다시 평가되므로 비용이 많이 드는 작업에 더 효율적입니다.

다음은 계산된 속성을 사용하는 Vue 구성 요소의 기본적인 예입니다.

<template>
  <div>
    <p>Full Name: {{ fullName }}</p>
  </div>
</template>

<script>
export default {
  data() {
    return {
      firstName: 'John',
      lastName: 'Doe'
    };
  },
  computed: {
    fullName() {
      return this.firstName + ' ' + this.lastName;
    }
  }
};
</script>

이 예에서 fullName 계산된 속성은 firstNamelastName 데이터 속성을 결합하여 전체 이름을 반환합니다. fullName은 계산된 속성이므로 firstName 또는 lastName이 변경될 때마다 자동으로 업데이트됩니다.

계산된 속성 대 메서드

언뜻 보기에 계산된 속성은 메서드와 비슷해 보일 수 있습니다. 둘 다 계산을 수행하고 결과를 반환하는 데 사용할 수 있기 때문입니다. 그러나 두 가지 사이에는 주요 차이점이 있습니다.

  • 방법: 방법은 호출될 때마다 재평가됩니다. 즉, 결과를 캐시하지 않으며 계산 비용이 많이 들 경우 효율성이 떨어질 수 있습니다.
  • 계산된 속성: 계산된 속성은 종속성에 따라 캐시되고 종속성이 변경될 때만 다시 평가됩니다. 이렇게 하면 비용이 많이 드는 계산이 있는 시나리오에서 더 효율적입니다.

예를 들어, 전체 이름 계산에 계산된 속성 대신 메서드를 사용하면 템플릿이 렌더링될 때마다 호출됩니다. 계산된 속성의 경우 종속성 중 하나가 변경될 때만 다시 계산됩니다.

계산된 속성에 Getter 및 Setter 사용

계산된 속성은 getters ​​및 setters도 가질 수 있습니다. 기본적으로 계산된 속성은 getter만 있지만, 데이터 업데이트를 처리하기 위해 setter를 추가할 수 있습니다.

다음은 getter와 setter가 모두 포함된 계산된 속성의 예입니다.

<template>
  <div>
    <p>Full Name: {{ fullName }}</p>
    <input v-model="fullName" placeholder="Enter your full name" />
  </div>
</template>

<script>
export default {
  data() {
    return {
      firstName: 'John',
      lastName: 'Doe'
    };
  },
  computed: {
    fullName: {
      get() {
        return this.firstName + ' ' + this.lastName;
      },
      set(value) {
        const names = value.split(' ');
        this.firstName = names[0];
        this.lastName = names[names.length - 1];
      }
    }
  }
};
</script>

이 예에서 fullName 계산된 속성에는 전체 이름을 반환하는 getter와 입력된 이름을 분할하고 firstNamelastName 데이터 속성을 업데이트하는 setter가 있습니다.

계산된 속성의 반응성

계산된 속성은 반응적이며 종속성이 변경되면 자동으로 업데이트됩니다. 예를 들어, firstName 또는 lastName의 값을 변경하면 fullName 계산된 속성이 자동으로 업데이트되어 새 값을 반영합니다.

다음은 이러한 반응성을 보여주는 예입니다.

<template>
  <div>
    <p>First Name: {{ firstName }}</p>
    <p>Full Name: {{ fullName }}</p>
    <button @click="firstName = 'Jane'">Change First Name to Jane</button>
  </div>
</template>

<script>
export default {
  data() {
    return {
      firstName: 'John',
      lastName: 'Doe'
    };
  },
  computed: {
    fullName() {
      return this.firstName + ' ' + this.lastName;
    }
  }
};
</script>

이 예에서 버튼을 클릭하면 firstName이 "Jane"로 변경되고, fullName 계산된 속성이 자동으로 "Jane Doe"로 업데이트됩니다.

계산된 속성 사용을 위한 모범 사례

  • 반응형 데이터에 의존하는 비용이 많이 드는 계산에는 계산된 속성을 사용합니다.
  • 계산된 속성을 간단하게 유지하고 값을 반환하는 데 집중하세요.
  • 계산된 속성 내부에서 부작용을 방지하세요. 대신 작업을 수행해야 하는 경우에는 메서드를 사용하세요.
  • 데이터 읽기와 쓰기를 모두 처리해야 하는 경우 계산된 속성에 게터와 세터를 사용하세요.
  • 계산된 속성의 종속성이 반응형인지 확인하세요. 그렇지 않으면 올바르게 업데이트되지 않습니다.

결론

계산된 속성은 코드를 깔끔하고 효율적이며 유지 관리하기 쉽게 유지할 수 있는 Vue.js의 강력한 기능입니다. 다른 반응형 속성에서 데이터를 파생하고 종속성이 변경될 때 자동으로 업데이트하는 데 도움이 됩니다. 계산된 속성을 효과적으로 사용하는 방법을 이해하면 보다 강력하고 성능이 뛰어난 Vue.js 애플리케이션을 빌드할 수 있습니다.