Posis

[Vue.js] computed feat.methods 본문

Vue.js

[Vue.js] computed feat.methods

CooNiHong 2021. 8. 6. 18:27

이번 포스팅에서는 computed에 대해서 알아보겠습니다.

 

computed

  • 연결된 data의 값이 변경되었을 때, 복잡한 계산식을 계산해서 값을 캐싱해서 return 해주는 속성입니다.

캐싱

  • 값을 계산하여 잠시 동안 저장해두는 것을 의미합니다.
<template>
  <p>{{ msg }}</p>
  <button @click="changeMag">문자열 뒤집기</button>
  <hr />
  <p v-if="isDone">{{ reverseString }}</p>
</template>

<script>
export default {
  name: 'App',
  data() {
    return {
      msg: 'Hello Vue.js!!',
      isDone: false,
    };
  },
  computed: {
    reverseString() {
      console.log('computed');
      return this.msg
        .split('')
        .reverse()
        .join('');
    },
  },
  methods: {
    changeMag() {
      console.log('methods');
      if (this.isDone) this.isDone = false;
      else this.isDone = true;
    },
  },
};
</script>

<style>
p {
  padding: 10px;
  text-align: center;
  font-size: 20px;
}
button {
  display: block;
  margin: 0 auto;
}
</style>

위 예제 코드는 'Hello Vue.js!!' 문자열을 뒤집어주는 코드입니다.

함수를 살펴보면 reverseString()은 msg의 문자열을 뒤집어주는 역할, changeMsg()는 isDone의 boolean값을 바꿔주기만 한다.

예제 코드를 실행하면 나오는 첫 화면입니다.

여기서 문자열 뒤집기 버튼을 클릭하면 'Hello Vue.js!!'가 뒤집어진 문자열이 화면에 나타나게 됩니다.

이때 콘솔 창을 확인해보면 methods와 computed가 출력된 것을 알 수 있습니다.

 

위 사진을 보면 computed는 버튼을 최초의 클릭했을 때 한 번만 출력하고 그 후로는 methods만 계속 출력하는 것을 알 수 있습니다. 이는 computed의 연결된 data값이 변경하지 않는다면 호출하지 않는 것을 알 수 있습니다. 

 

computed와 methods의 차이

computed

  • 반드시 return 값이 존재해야 합니다.
  • 캐싱된 데이터만 사용합니다.
  • 연결된 data가 변경되었을 경우에만 계산합니다.
  • 매개변수를 받을 수 없습니다.

methods

  • 명시적으로 호출될 때만 실행됩니다.
  • 매개변수를 받을 수 있습니다.
728x90

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

[Vue.js] 템플릿 약어  (0) 2021.08.08
[Vue.js] 클래스와 스타일 바인딩  (0) 2021.08.08
[Vue.js] Getter와 Setter  (0) 2021.08.07
[Vue.js] 라이프사이클  (0) 2021.07.31
[Vue.js] 시작하기, 장단점  (0) 2021.07.30