目录
在 Vue.js 中,watch
是一个非常有用的选项,用于监听数据的变化。本文将介绍 Vue2 中watch
的用法,并结合 Vue3 的情况进行对比,同时给出相应的代码示例。
一、Vue2 中的 Watch
在 Vue2 中,watch
主要用于监听数据的变化。以下是一个 Vue2 的示例代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script>
</head>
<body>
<div id="app">
<button @click="changeStr">Change STR</button>
</div>
<script>
new Vue({
el: '#app',
data() {
return {
str: '123',
obj: {
a: 1
}
};
},
methods: {
changeStr() {
this.str = 'X';
this.obj.a = 2;
}
},
watch: {
str: function (newValue, oldValue) {
console.log('str changed:', newValue, oldValue);
},
'obj.a': function (newValue, oldValue) {
console.log('obj.a changed:', newValue, oldValue);
}
}
});
</script>
</body>
</html>
在上述代码中,我们创建了一个 Vue 实例,其中包含一个数据属性str
和一个对象属性obj
。通过watch
选项,我们监听了str
和obj.a
的变化,并在变化时打印出新旧值。
二、Vue3 中的 Watch
Vue3 对watch
进行了一些改进和调整。以下是一个 Vue3 的示例代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<script src="https://unpkg.com/vue@3/dist/vue.global.js"></script>
</head>
<body>
<div id="app">
<button @click="changeStr">Change STR</button>
<button @click="changeObjA">Change obj.a</button>
</div>
<script>
const app = Vue.createApp({
data() {
return {
str: '123',
obj: {
a: 1
}
};
},
methods: {
changeStr() {
this.str = 'X';
},
changeObjA() {
this.obj.a = 2;
}
},
watch: {
str(newValue, oldValue) {
console.log('str changed in Vue3:', newValue, oldValue);
},
obj: {
handler(newValue, oldValue) {
console.log('obj changed in Vue3:', newValue, oldValue);
},
deep: true
}
}
});
app.mount('#app');
</script>
</body>
</html>
在 Vue3 中,watch
的用法与 Vue2 略有不同。可以直接传入一个函数来监听单个数据属性的变化,也可以传入一个对象来监听对象属性的变化,并通过设置deep
选项为true
来实现深度监听。
三、总结
无论是 Vue2 还是 Vue3,watch
都是一个非常有用的工具,可以帮助我们监听数据的变化并做出相应的处理。在 Vue3 中,watch
的用法更加灵活和简洁,同时也提供了更多的选项和功能。希望本文对你理解 Vue2 和 Vue3 中的watch
有所帮助。