watch 속성은 computed 속성과 비슷한 방식으로 작동하기 때문에, 종종 혼동이 된다.
watch는 "부수 효과" 처리를 위한 것이다. 만약 상태를 변경하고 싶다면 computed를 사용하는게 좋다.
"부수 효과"는 컴포넌트 외부의 동작이나, 비동기 처리를 말한다.
위 목록 중 어떤 것도 직접 컴포넌트에 영향을 주지 않기 때문에, 부수 효과로 간주한다.
data를 업데이트 하기위해 watch를 사용하기도 한다. template 이나 methods에서 업데이트해야 한다면, data안으로 들어가야 한다. 그 후의 속성 변경에 대한 응답으로 업데이트 해야 하는 경우, watch를 사용해야 한다.
computed는 다른 변화에 대한 응답으로 계산을 업데이트 해야할 때 좋다.
computed 속성 대신 메소드와 같은 함수를 정의할 수도 있다. 최종 결과에 대해 두가지 접근 방식은 서로 동일하다.
다만, computed 속성은 종속 대상(message)을 따라서 캐싱(저장)된다!
<p>뒤집힌 메시지: "{{ reversedMessage() }}"</p>
// 컴포넌트 내부
var vm = new Vue({
el: "app",
methods: {
reversedMessage: function () {
return this.message.split('').reverse().join('')
}
}
computed: {
now: function () {
return Date.now()
}
}
})