在 Vue.js 中,watch
?是一个非常有用的选项,它允许你在数据变化时执行自定义逻辑。当你需要在数据变化时执行异步或开销较大的操作时,这是非常有用的。
你可以在 Vue 实例中设置一个?watch
?选项来监听某个数据的变化。当被监听的数据变化时,watch
?回调函数就会被触发。
以下是一个简单的示例:
new Vue({
el: '#app',
data: {
message: 'Hello Vue!'
},
watch: {
message: function(newVal, oldVal) {
console.log('Message changed from ' + oldVal + ' to ' + newVal);
}
}
});
在这个例子中,我们监听了?message
?数据属性的变化。当?message
?变化时,watch
?回调函数就会被触发,打印出旧值和新值。
注意,watch
?回调函数在数据变化时只会被调用一次。如果你希望在数据变化时持续执行某些操作,可以使用?watch
?的?deep
?选项或者?watchEffect
?和?watchAsync
?API。
此外,你还可以在?watch
?选项中使用异步函数,这对于执行异步操作或需要等待外部资源(如 API 响应)的操作非常有用。例如:
watch: {
async message(newVal, oldVal) {
console.log('Message changed from ' + oldVal + ' to ' + newVal);
await someAsyncFunction(); // 等待异步函数完成
console.log('Async operation completed.');
}
}
在这个例子中,我们使用了?async/await
?语法来等待?someAsyncFunction
?函数的完成。请注意,你需要在回调函数的顶部声明?async
,并将函数体包裹在一对括号中。