Vue 공부 - watch 속성

이윤우·2022년 7월 26일
0

Vue

목록 보기
7/16
post-thumbnail

watch 속성

  • 대부분의 경우 computed 속성이 더 적합
  • 데이터 변경에 대한 응답으로 비동기식 또는 시간이 많이 소요되는 조작을 수행하려는 경우 watch가 적합
<div id="watch-example">
  <p>
    yes/no 질문을 물어보세요:
    <input v-model="question">
  </p>
  <p>{{ answer }}</p>
</div>
var watchExampleVM = new Vue({
  el: '#watch-example',
  data: {
    question: '',
    answer: '질문을 하기 전까지는 대답할 수 없습니다.'
  },
  watch: {
    question: function (newQuestion) {
      this.answer = '입력을 기다리는 중...'
      this.debouncedGetAnswer()
    }
  },
  created: function () {
    this.debouncedGetAnswer = _.debounce(this.getAnser, 500)
  },
  methods: {
    getAnswer: function() {
      if (this.question.indexOf('?') === -1) {
        this.answer = '질문에는 일반적으로 물음표가 포함 됩니다. ;-)'
        return
      }
      this.answer = '생각중...'
      var vm = this
      axios.get('https://yesno.wtf/api')
      	.then(function (response) {
        	vm.answer = _.capitalize(response.data.answer)
      })
      .catch(function (error) {
        vm.anser = '에러! API 요청에 오류가 있습니다. ' + error
      })
    }
  }
})

0개의 댓글