watch의 의미와 쓰임에 대해서는 알았지만, 여러가지 사용 형태에 대해서는 잘 몰랐다. 처음엔 행위를 catch해서 function만 수행하는 줄 알았다.
var vm = new Vue({
el: '#demo',
data: {
firstName: 'Foo',
lastName: 'Bar',
fullName: 'Foo Bar'
},
watch: {
firstName: function (val) {
this.fullName = val + ' ' + this.lastName
},
lastName: function (val) {
this.fullName = this.firstName + ' ' + val
}
}
})
위 예제 형태처럼 해당 action을 catch해서 function을 변수로 갖는다.
new Vue({
data() {
return {
message: 'Hello'
}
},
methods: {
logMessage() {
console.log(this.message);
}
},
watch: {
'message': 'logMessage' // 대상 속성과 메서드 함수를 매칭
}
})
(참고) 당연하겠지만 위 코드도 가능하다. methods에 method를 정의하고, 그 메서드 함수를 대상 속성과 매칭한다.
new Vue({
data() {
return {
message: 'Hello'
}
},
watch: {
'message': {
handler(value, oldValue) {
console.log(value);
},
immediate: true // 컴포넌트가 생성되자마자 즉시 실행
}
}
})
(참고) watch 대상 속성에 위와 같이 handler()
와 immediate
속성을 정의할 수 있다.