Vue/컴포지션 API

컴포지션 API

IT Blue 2021. 7. 20. 18:45

 

예제

 

App.vue

<template>
  <h1 @click="increase">
    {{ count }} / {{ doubleCount }}
  </h1>
  <h1>
    {{ message }} / {{ reversedMessage }}
  </h1>
</template>
<script>
export default {
  data() {
    return {
      message: 'Hello world!',
      count: 0
    }
  },
  computed: {
    doubleCount() {
      return this.count * 2
    },
    reversedMessage() {
      return this.message.split('').reverse().join('')
    }
  },
  methods: {
    increase() {
      this.count += 1
    }
  }
}
</script>

 

코드 이해하기

<h1 @click="increase"> {{ count }} / {{ doubleCount }} </h1> 

- 해당 h1 태그를 클릭하면 increase() 메소드 동작

- count 횟수를 +1 증가

- count 에 변화가 생겼으므로 doubleCount 동작

- doubleCount 는 count * 2 증가

 

<h1> {{ message }} / {{ reversedMessage }} </h1>

- {{ message }} 는 message: 'Hello world!' 를 출력

- reversedMessage() 는 해당 message 를 반전시켜줌

 

특정한 부분을 해석하기 위해서 많은 노력이 필요

vue.js 에서 제공하는 컴포지션API 를 사용하면 해석하기 좋은 형태로 만들어 줄 수 있다

 

컴포지션 API 리팩토링

 

App.vue

<template>
  <h1 @click="increase">
    {{ count }} / {{ doubleCount }}
  </h1>
  <h1>
    {{ message }} / {{ reversedMessage }}
  </h1>
</template>
<script>
import { ref, computed } from 'vue'

export default {
  setup() {
    const message = ref('Hello World')
    const reversedMessage = computed(() => {
      return message.value.split('').reverse().join('')
    })

    const count = ref(0)
    const doubleCount = computed(() => count.value * 2)
    function increase() {
      count.value += 1
    }

    return {
      message,
      reversedMessage,
      count,
      doubleCount,
      increase
    }
  }
}
</script>

 

컴포지션 API를 통해서 깔끔하게 정리를 할 수 있다

 


참고

https://v3.ko.vuejs.org/guide/composition-api-introduction.html

 

소개 | Vue.js

소개 컴포지션 API가 필요한 이유 Vue 컴포넌트를 만들면 재사용 가능한 코드 조각으로 결합되어진 인터페이스의 반복가능한 부분들을 추출할 수 있습니다. 이것만으로도 어플리케이션에서 유지

v3.ko.vuejs.org