vue2的watch多个对象共用一样的代码
时间: 2024-09-23 19:06:44 浏览: 35
Vue 2中的`watch`生命周期钩子可以用于监听数据的变化并执行相应的函数。如果你想对多个对象共享相同的监听代码,你可以通过传递一个计算属性作为`watch`的第一个参数,而不是直接监听具体的对象。计算属性会基于其依赖的数据动态生成,并在所有依赖的数据改变时触发。
例如:
```javascript
// 定义一个计算属性
const sharedWatcher = computed(() => {
// 这里是你想在多个对象变化时执行的公共逻辑
// 可能涉及到的数据处理、状态更新等
});
// 使用 `watch` 监听这个计算属性
watch(sharedWatcher, (newVal, oldVal) => {
// 新旧值在这里,可以根据需要做进一步处理
console.log('Shared watcher triggered:', newVal);
}, { deep: true }); // 如果需要深度监听多个嵌套的对象
// 在需要的地方使用
data() {
return {
obj1: { prop1: 'initial' },
obj2: { prop2: 'initial' },
// ...
};
},
mounted() {
this.$watch('obj1', null, { immediate: true }); // 初始化一次
this.$watch('obj2', null, { immediate: true });
}
```
这样,无论`obj1`还是`obj2`或者其他对象的`prop`发生变化,`sharedWatcher`都会执行对应的回调函数。
阅读全文