在 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
,并将函数体包裹在一对括号中。