# 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 // ์ปดํฌ๋„ŒํŠธ๊ฐ€ ์ƒ์„ฑ๋˜์ž๋งˆ์ž ์ฆ‰์‹œ ์‹คํ–‰
    }
  }
})