# computed API Vue 3
์ปดํจํฐ๋(computed) API๋ ์ปดํฌ์ง์ (Composition API)์์ ์ฌ์ฉ๋ ์ปดํจํฐ๋ ์์ฑ์ ์๋ฏธํฉ๋๋ค. ์ด ํ์ด์ง์์๋ ์ปดํฌ์ง์ ์์ ์ปดํจํฐ๋ ์์ฑ์ ์ด๋ป๊ฒ ์ฌ์ฉํ ์ ์๋์ง ์ดํด๋ณด๊ฒ ์ต๋๋ค.
TIP
์ปดํจํฐ๋(computed) ์์ฑ์ ๋ทฐ์์ ์์ฃผ ์ฌ์ฉ๋๋ ์์ฑ์ ๋๋ค. ํ ํ๋ฆฟ ํํ์์ ์ฝ๋๋ฅผ ๊ฐ๊ฒฐํ๊ฒ ํด์ฃผ๊ณ API์์ ๋ฐ์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ๊ณตํ ๋ ์ฐ์ฐ ๋ก์ง์ ๋จ์ํ ํด์ค๋๋ค.
# computed API ์๊ฐ
์ธ์คํด์ค ์ต์ ์์ฑ ๋ฐฉ์์ผ๋ก ์์ฑํ ์ปดํจํฐ๋ ์์ฑ ์ฝ๋์ ๋๋ค.
<template>
<div>{{ reversedMessage }}</div>
</template>
<script>
export default {
data() {
return {
message: 'Hello'
}
},
computed: {
reversedMessage() {
return this.message.split('').reverse().join('');
}
}
}
</script>
์ ์ฝ๋๋ ์ปดํจํฐ๋ ์์ฑ์ ์ฌ์ฉํด Hello
๋ฌธ์์ด์ ์์๋ฅผ ๋ค์ง์ด olleH
๋ก ํ๋ฉด์ ํ์ํ์ต๋๋ค. ์ด ์ฝ๋๋ฅผ ์ปดํฌ์ง์
์คํ์ผ๋ก ์์ฑํ๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
<template>
<div>{{ reversedMessage }}</div>
</template>
<script>
import { ref, computed } from 'vue';
export default {
setup() {
// data
const message = ref('');
// computed
const reversedMessage = computed(() => {
return message.value.split('').reverse().join('');
});
return { reversedMessage }
}
}
</script>
์ปดํฌ์ง์
์์ ์ปดํจํฐ๋ ์์ฑ์ ์ฐ๊ธฐ ์ํด์๋ ๋จผ์ ์์ ๊ฐ์ด computed
API๋ฅผ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์์ ์ํฌํธํด์ผ ํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ reversedMessage
ํจ์๊ฐ ์ ์ธ๋ ๊ฒ์ฒ๋ผ computed
API๋ฅผ ํธ์ถํ๊ณ ์์ ์ฝ๋ฐฑ์ผ๋ก ์ปดํจํฐ๋ ์์ฑ์ผ๋ก ์ ์๋ ๊ฐ์ ์์ฑํฉ๋๋ค. ์์ฑ๋ ์ฝ๋๋ฅผ ๋ณด๋ฉด ์ธ์คํด์ค ์ต์
์์ฑ์ผ๋ก ์์ฑํ ์ฝ๋์ ํฌ๊ฒ ๋ค๋ฅด์ง ์์ต๋๋ค. ๋ค๋ง, message.split()....
ํํ๊ฐ ์๋๋ผ message.value.split()...
์ ๊ฐ์ด message.value
๊ฐ์ ์ฌ์ฉํด์ผ ํฉ๋๋ค.
TIP
์ ref
๋ก ์ ์ธ๋ ๊ฐ์ setup
ํจ์ ์์์ .value
๋ก ์ ๊ทผํด์ผ ํ ๊น์? ์์ธํ ๋ด์ฉ์ ๋ค์ ๋งํฌ๋ฅผ ์ฐธ๊ณ ํ์ธ์ ๐ ์ปดํฌ์ง์
์ .value
# ์ฉ์ด ์ ๋ฆฌ
- ์ปดํจํฐ๋ ์์ฑ : Vue 2์์ ์ฌ์ฉํ๋ ์ปดํจํฐ๋ ์์ฑ
- ์ปดํจํฐ๋ API : ์ปดํฌ์ง์ ์คํ์ผ๋ก ์์ฑ๋ setup ์์์์ ์ปดํจํฐ๋ ์์ฑ
โ Mixins vs HOC Watch API ๐ โ