# watch ์์ฑ
watch ์์ฑ์ ํน์ ๋ฐ์ดํฐ์ ๋ณํ๋ฅผ ๊ฐ์งํ์ฌ ์๋์ผ๋ก ํน์ ๋ก์ง์ ์ํํด์ฃผ๋ ์์ฑ์ ๋๋ค.
# watch ์ฝ๋ ํ์
watch ์์ฑ์ ๊ตฌํ ์ฝ๋ ํ์์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
new Vue({
data() {
return {
message: 'Hello'
}
},
watch: {
message: function(value, oldValue) {
console.log(value);
}
}
})
์ ์ฝ๋๋ message
๋ผ๋ ๋ฐ์ดํฐ์ watch ์์ฑ์ ์ง์ ํ ์ฝ๋์
๋๋ค. message
์ ๋ฐ์ดํฐ๊ฐ ๋ณํ ๋๋ง๋ค watch ์์ฑ์ ์ ์ํ message ํจ์๊ฐ ์คํ๋๋ฉด์ ์ฝ์์ ๋ณํ ๋ฐ์ดํฐ๋ฅผ ์ถ๋ ฅํฉ๋๋ค.
# watch ์ค์ฉ ๋ฌธ๋ฒ
์์ ์์์์ ์ดํด๋ณธ ๊ธฐ๋ณธ์ ์ธ ๋ฌธ๋ฒ ๋ง๊ณ ๋ ์๋์ ๊ฐ์ด ๋ค์ํ ํํ๋ก watch ์์ฑ์ ๊ตฌํํ ์ ์์ต๋๋ค.
# 1. watch ์์ฑ์ ๋ฉ์๋ ํจ์๋ฅผ ์ฐ๊ฒฐ
watch ๋์ ์์ฑ์ ํจ์๋ฅผ ์ฐ๊ฒฐํ๋ ๋์ ๋ฉ์๋ ํจ์๋ฅผ ์ฐ๊ฒฐํ ์ ์์ต๋๋ค.
new Vue({
data() {
return {
message: 'Hello'
}
},
methods: {
logMessage() {
console.log(this.message);
}
},
watch: {
'message': 'logMessage' // ๋์ ์์ฑ๊ณผ ๋ฉ์๋ ํจ์๋ฅผ ๋งค์นญ
}
})
# 2. ํธ๋ค๋ฌ์ ์ด๊ธฐ ์คํ ์ต์
watch ๋์ ์์ฑ์ ์๋์ ๊ฐ์ด handler()
์ immediate
์์ฑ์ ์ ์ํ ์ ์์ต๋๋ค.
new Vue({
data() {
return {
message: 'Hello'
}
},
watch: {
'message': {
handler(value, oldValue) {
console.log(value);
},
immediate: true // ์ปดํฌ๋ํธ๊ฐ ์์ฑ๋์๋ง์ ์ฆ์ ์คํ
}
}
})