# computed ์์ฑ
์ปดํจํฐ๋(computed) ์์ฑ์ ํ ํ๋ฆฟ์ ๋ฐ์ดํฐ ํํ์ ๋ ์ง๊ด์ ์ด๊ณ ๊ฐ๊ฒฐํ๊ฒ ๋์์ฃผ๋ ์์ฑ์ ๋๋ค. ๋ฐ๋ก ์ฝ๋๋ฅผ ๋ณด๊ฒ ์ต๋๋ค.
# computed ์์ฑ ์์
<div>{{ message.split('').reverse().join('') }}</div>
์ ์ฝ๋๋ message๋ผ๋ ๋ฐ์ดํฐ ์์ฑ์ ๋ฌธ์์ด ์์๋ฅผ ์ญ์ผ๋ก ๋ณํํด์ฃผ๋ ์ฝ๋์ ๋๋ค. message ๊ฐ์ด ๋ง์ฝ Hello๋ผ๋ฉด ํ๋ฉด์ ์ถ๋ ฅ๋๋ ๊ฐ์ olleH์ ๋๋ค. ์ด์ฒ๋ผ ์ฝง์์ผ ๊ดํธ ์์๋ ๋จ์ํ ๋ฐ์ดํฐ ์์ฑ์ ๊ฐ๋ง ํ์ํ๋๊ฒ ์๋๋ผ ์๋ฐ์คํฌ๋ฆฝํธ์ ๋ด์ฅ API๋ฅผ ํ์ฉํ์ฌ ์ด๋ ์ ๋ ๊ฐ๊ณตํ ์ ์์ต๋๋ค.
์ด์ ๊ฐ์ ๊ณ์ฐ์์ด ํ ํ๋ฆฟ์ ๋ง์์ง๋ฉด ํ ํ๋ฆฟ์ ๊ฐ๋ ์ฑ์ด ํ์ ํ ๋จ์ด์ง๋๋ค. ๋ฐ๋ผ์ ์๋์ ๊ฐ์ด computed ์์ฑ์ ํ์ฉํด์ผ ํฉ๋๋ค.
computed: {
reverseMessage() {
return this.message.split('').reverse().join('');
}
}
๋ฌธ์์ด์ ์ญ์ผ๋ก ๋ณํํ๋ ๋ก์ง์ ์ปดํจํฐ๋ ์์ฑ์ ์ ์ํ๊ธฐ ๋๋ฌธ์ ์ต์ข ์ ์ผ๋ก ํ๋ฉด์๋ ์๋์ ๊ฐ์ด ๊ตฌํํ๋ฉด ๋ฉ๋๋ค.
<div>{{ reverseMessage }}</div>
# computed ์์ฑ์ ์ฅ์
์ปดํจํฐ๋ ์์ฑ์ ๋จ์ํ ๋ทฐ ํ ํ๋ฆฟ ์ฝ๋์ ๊ฐ๋ ์ฑ๋ง ๋์ฌ์ค ๋ฟ๋ง ์๋๋ผ ์ปดํจํฐ๋ ์์ฑ์ ๋์์ผ๋ก ์ ํ data ์์ฑ์ด ๋ณํ์ ๋ ์ด๋ฅผ ๊ฐ์งํ๊ณ ์๋์ผ๋ก ๋ค์ ์ฐ์ฐํด์ฃผ๋ ์ฅ์ ์ด ์์ต๋๋ค.
์์์ ์ดํด๋ณธ ์ฝ๋์์ message ๊ฐ์ Hello Vue.js๋ก ๋ฐ๊พธ๋ ์๊ฐ ์ปดํจํฐ๋ ์์ฑ์ด ๋ค์ ์ฐ์ฐ์ ํด์ ํ๋ฉด์ sj.euV olleH๋ฅผ ํ์ํด์ค๋๋ค. ํ๋ฒ message ๊ฐ์ ๋ณ๊ฒฝํด๋ณด๊ณ ๋ค์ ํ๋ฉด์ ๊ฐฑ์ ํด์ฃผ๋์ง ์ง์ ํ์ธํด๋ณด์ธ์.
# computed ์์ฑ ์ฃผ์์ฌํญ
์ปดํจํฐ๋ ์์ฑ์ ์ฌ์ฉํ ๋ ์ฃผ์ํ ์ฌํญ์ ๋ค์ 2๊ฐ์ง์ ๋๋ค.
- ์ปดํจํฐ๋ ์์ฑ์ ์ธ์๋ฅผ ๋ฐ์ง ์๋๋ค.
- HTTP ํต์ ๊ณผ ๊ฐ์ด ์ปดํจํ ๋ฆฌ์์ค๊ฐ ๋ง์ด ํ์ํ ๋ก์ง์ ์ ์ํ์ง ์๋๋ค.
# 1. ์ธ์๋ฅผ ๋ฐ์ง ์๋ computed
์ปดํจํฐ๋์ ์ฌ์ฉ๋ฒ์ ์ตํ๊ณ ๋์ ํ๋ฉด์ ๊ตฌํํ๋ค๊ฐ ๋ณด๋ฉด ์์ฐ์ค๋ฝ๊ฒ ์๋์ ๊ฐ์ ์๋๋ฅผ ํ๊ฒ ๋ฉ๋๋ค.
<div>{{ reverseMessage(false) }}</div>
computed: {
reverseMessage(isReversed) {
return isReversed ? this.message.split('').reverse().join('') : this.message;
}
}
์์ ์ฝ๋๋ ์ ์์ ์ผ๋ก ๋์ํ์ง ์์ต๋๋ค. ํ ํ๋ฆฟ์ ์ ์ธํ ์ปดํจํฐ๋ ์์ฑ์ ๊ดํธ๊ฐ ์๊ธฐ๋ ์๊ฐ ํด๋น ํ ํ๋ฆฟ์ ์ค์ DOM์ผ๋ก ๋ณํํ ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์์ ์๋ฌ๋ฅผ ๋ฐ์์ํต๋๋ค.
# 2. HTTP ํต์ ์ฝ๋๋ฅผ ์ ์ธํ๋ computed
ํํ ์ ์ง๋ฅด๋ ๋ ๋ค๋ฅธ ์ค์๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
data: {
message: ''
},
computed: {
reverseMessage() {
var vm = this;
axios.get('/message').then(function(response) {
vm.message = response.data;
});
return this.message.split('').reverse().join('');
}
}
์ปดํจํฐ๋ ์์ฑ์ HTTP ์์ฒญ๊ณผ ๊ฐ์ ๋น์ผ ๋น์ฉ์ ์ฝ๋๋ฅผ ๋ฃ๋ ๊ฒฝ์ฐ๊ฐ ์์ต๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก ์ปดํจํฐ๋ ์์ฑ์ ํ ํ๋ฆฟ ์ฝ๋์ ๊ฐ๋ ์ฑ์ ์ํ ๊ธฐ๋ฅ์ด๋ฉฐ HTTP ํต์ ๊ณผ ๊ฐ์ด ๋ธ๋ผ์ฐ์ ๋ฆฌ์์ค๊ฐ ๋ง์ด ํ ์ ๋๋ ์ฝ๋๋ค์ watch๋ methods์ ๋ฃ๋ ๊ฒ์ด ์ ํฉํฉ๋๋ค.