watch监视属性
Vue2监听器网址:计算属性和侦听器 — Vue.js (vuejs.org)
Vue中监听器(watch
)用来响应数据的变化。需要在数据变化时执行异步或开销较大的操作时,这个方式是最有用的。
1 |
|
一、监事属性
其中a可以是属性、计算属性或者是方法名。a所在对象有handler
、immediate
、deep
等属性。
handler
:是一个函数。含有连个参数,分别为当前值(newValue
),先前值(lastValue
)。1
2
3handler(newValue,lastValue){
...
}以下是监听器的使用案例:
1
2
3
4
5html:
<div id="app">
<h1>a的值是:{{a}} </h1>
<button @click="a++">点击a+1</button>
</div>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16script:
new Vue({
el: '#app',
data() {
return {
a: 1,
}
},
watch: {
a: {
handler(newValue, lastValue) {
console.log("a被改变了", newValue, lastValue);
}
}
},
})1
2
3点击按钮后
控制台:
a被改变了 2 1immediate
:是一个属性,表示一开始自动对该属性进行监听。属性值为true
或false
,默认为false
。1
2
3a:{
immediate:true
}deep
:深度监视,也是一个属性,表示对该属性对象内部值进行监测改变。如果属性是一个对象,想要监视它的子属性可以通过对该属性进行深度监视,1
2
3
4
5html:
<div id="app">
<h1>a的值是:{{numbers.a}} </h1>
<button @click="numbers.a++">点击a+1</button>
</div>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20script:
new Vue({
el: '#app',
data() {
return {
numbers: {
a: 1,
b: 1,
}
}
},
watch: {
numbers: {
deep:true,
handler() {
console.log("numbers被改变了");
},
}
},
})1
2
3点击按钮后
控制台:
numbers被改变了
二、监视属性简写
在没有immediate
和deep
属性时可以使用监视属性的简写;
1 |
|
三、监事属性的第二种写法
1 |
|
总结
监视属性watch :
- 当被监视的属性变化时,回调函数自动调月,进行相关操作;
- 监视的属性必须存在,才能进行监视! !
- 监视的两种写法:
new Vue
是传入watch配置;- 通过
vm.$watch
监视;深度监视:
- vue中的
watch
默认不监测对象内部值的改变 ( 一层 ) 。- 配置
deep:true
可以监测对象内部值改变 ( 多层 ) 。备注:
- vue 自身可以监测对象内部值的改变,但 vue 提供的
watch
默认不可以 !- 使月
watch
时根据数据的具休结构,决定是否采用深度监视。
watch监视属性
http://vityabour.github.io/2023/09/01/watch/