在 Vue.js 中,watch 是一个用于观察和响应 Vue 实例上数据变化的对象。当需要在数据变化时执行异步或开销较大的操作时,watch 是非常有用的。
说明
watch 对象包含一系列键值对,其中键是需要观察的响应式数据属性,值是一个处理函数或者一个包含处理函数和选项的对象。
当观察的数据属性发生变化时,对应的处理函数会被调用,并且会接收到新值和旧值作为参数。
你可以在处理函数中执行任何需要在数据变化时进行的操作,比如发送异步请求、更新其他数据属性等。
例子
下面是一个简单的 Vue 组件示例,其中使用了 watch 来观察 searchQuery 数据属性的变化,并在变化时执行一个搜索函数:
<template>
<div>
<input v-model="searchQuery" type="text" placeholder="Search...">
<ul>
<li v-for="item in searchResults" :key="item.id">{
{
item.name }}</li>
</ul>
</div>
</template>
<script>
export default {
data() {
return {
searchQuery: '',
searchResults: []
};
},
watch: {
searchQuery(newVal, oldVal) {
// 当 searchQuery 发生变化时,执行搜索函数
this.performSearch(newVal);
}
},
methods: {
performSearch(query) {
// 这里是一个模拟的搜索函数,实际应用中可能会发送异步请求到后端获取搜索结果
if (query) {
this.searchResults = [
{
id: 1, name: 'Result 1 for ' + query },
{
id: 2, name: 'Result 2 for ' + query },
{
id: 3, name: 'Result 3 for ' + query }
];
} else {
this.searchResults = [];
}
}
}
};
</script>
在这个例子中:
searchQuery 是一个响应式数据属性,通过 v-model 指令与输入框双向绑定。
当用户在输入框中输入文本时,searchQuery 的值会发生变化。
watch 对象中的 searchQuery 处理函数会在 searchQuery 值变化时被调用。
处理函数内部调用了 performSearch 方法来执行搜索操作,并根据搜索结果更新 searchResults 数据属性。
最后,搜索结果会显示在一个无序列表中。