본문 바로가기
프론트엔드/Vue.js

Computed Getter, Setter 예제

by step 1 2021. 7. 26.
반응형

주로 Vuex(Store, 중앙 집중식 저장소)를 사용할 때 활용된다.

 

기본적인 Computed 기능은 읽기전용인 Getter 기능으로만 사용가능하지만

computed 내의 get(), set() 메소드를 이용하여 Getter, Setter 기능을 사용할 수 있다.

 

지난번에 게시물을 사용하여 예제 코드를 작성하였다.

 

버튼을 클릭하면 문자열을 추가해주는 예제

App.vue

<template>
  <!-- button을 클릭하게 되면 add 메소드가 호출된다. -->
  <button @click="add">
    add
  </button>
  <!-- 문자를 배열로 한문자씩 쪼개고 다시 붙여서 출력 -->
  <h1>{{ msg.split('') }}</h1>
  <h1>{{ msg.split('').reverse() }}</h1>
  <h1>{{ msg.split('').reverse().join('') }}</h1>
  <!-- 함수로 선언 -->
  <h1>{{ reverseMessage() }}</h1>
  <!-- 데이터와 같이 사용 -->
  <h1>{{ reversedMessage }}</h1>
</template>

<script>
export default {
  data() {
    return {
      // Getter, Setter
      msg: 'Hello Computed!'
    }
  },
  // 계산된 데이터를 반복적으로 사용할 수 있다.  
  computed: {
    // 읽기전용(getter)
    // reversedMessage() {
      // 캐싱된 데이터로 이미 연산이 된 데이터를 반환한다.
      // return this.msg.split('').reverse().join('')
    // }

    // Getter, Setter 기능을 수행하도록 computed 설정
    reversedMessage: {
      get () {
        return this.msg.split('').reverse().join('')
      },
      set (value) {
        this.msg = value
        console.log('value: ' + value);
        console.log('msg: ' + this.msg);
      }
    }
  },
  methods: {
    reverseMessage() {
      return this.msg.split('').reverse().join('')
    },
    add() {
      // computed 로 계산된 데이터는 수정이 불가능하다.
      // this.reversedMessage += '!?'
      // this.msg += '!?'

      // computed에 선언한 set 명령어 사용하기
      // 선언한 set() 명령어가 호출된다.
      this.reversedMessage += '!?'

    }
  }
}
</script>

반응형

'프론트엔드 > Vue.js' 카테고리의 다른 글

클래스와 스타일 바인딩  (0) 2021.07.27
Watch  (0) 2021.07.26
Computed 캐싱  (0) 2021.07.26
computed  (0) 2021.07.21
템플릿 문법  (0) 2021.07.20