vue2 中 watch this.currentForm这个对象 当这个对象的值变化时使得这个对象保持不变
时间: 2024-10-08 17:18:15 浏览: 31
在 Vue.js 的 2.x 版本中,`watch` 钩子是用来监听数据变化的,但是它通常用于响应式地监视某个变量或计算属性的变化,并不是直接阻止对象本身的修改。如果你想确保 `this.currentForm` 对象在外部不受影响,你可以通过深拷贝(`JSON.parse(JSON.stringify(obj))` 或者第三方库如 lodash 的 `_.cloneDeep`)来创建一个新的副本进行观察。
当你在 watch 中改变这个复制的对象时,原始对象不会受到影响。例如:
```javascript
export default {
data() {
return {
currentForm: {}, // 原始对象
};
},
watch: {
copiedForm: {
handler(newVal) {
// newVal 是当前 Form 的副本
console.log('copiedForm changed:', newVal);
// 如果你想在这儿做一些操作但不影响原对象
this.copiedForm = JSON.parse(JSON.stringify(this.currentForm)); // 深度克隆
},
deep: true, // 设置深度观察
}
},
computed: {
copiedForm() {
return JSON.parse(JSON.stringify(this.currentForm));
} // 使用 computed 创建副本
}
```
阅读全文