说说你对vue中watch的immediate和deep的理解
在 Vue.js 中,watch
是一个非常有用的选项,用于观察和响应 Vue 实例上的数据变化。watch
可以接收两个特定的选项:immediate
和 deep
,这两个选项在特定场景下非常有用。
immediate
immediate
属性是一个布尔值,默认为 false
。当设置为 true
时,watch
会在初始化时立即调用一次回调函数,而不是等到观察的数据第一次变化时才触发。
例如:
export default {
data() {
return {
value: 1
};
},
watch: {
value: {
handler(newValue, oldValue) {
console.log(`value changed from ${oldValue} to ${newValue}`);
},
immediate: true
}
}
};
在这个例子中,组件被创建时,watch
会立即触发一次,输出 value changed from undefined to 1
。然后,每当 value
发生变化时,watch
都会再次触发。
deep
deep
属性也是一个布尔值,默认为 false
。当设置为 true
时,watch
会深度遍历观察的对象,以便在其嵌套属性发生变化时也能触发回调函数。这对于观察复杂对象(如数组或嵌套对象)非常有用。
例如:
export default {
data() {
return {
obj: {
a: 1,
b: 2
}
};
},
watch: {
obj: {
handler(newValue, oldValue) {
console.log('obj changed');
},
deep: true
}
}
};
在这个例子中,如果你更改 obj.a
或 obj.b
的值,watch
会触发回调函数,因为 deep
选项被设置为 true
。如果没有 deep
选项,只有当 obj
本身被替换为一个新的对象时,watch
才会触发。
总结
immediate
:让watch
在初始化时立即触发一次。deep
:让watch
深度观察对象,以便在其嵌套属性发生变化时也能触发。
这两个选项可以单独使用,也可以一起使用,以满足不同的观察需求。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律