vue中的侦听器
一.概念:
watch 侦听器
允许开发者监视数据的变化,从而针对数据的变化做特定的操作。例如,监视用户名的变化并发起请求,判断用户名是否可用。- 侦听器,也称为侦听属性。它可以监听指定的属性值的变化 ,只要属性值发生了变化 就会自动的触发相应的侦听器
- 相比之下,它比计算属性更通用,特别是在有异步操作的场景下
二.侦听器的定义及使用
1.简单侦听器的定义
- 使用
watch结构
定义侦听器 - 定义为函数的形式,且函数名称必须和你想侦听的属性名称完全一致
watch:{
// 定义侦听函数
想侦听的属性名称(新值,旧值){
// 业务处理
}
}
2.简单侦听器的使用
- 不需要人为调用,也不能人为调用
- 只要侦听的数据发生变化,就会自动的触发
- 如果想获取到处理结果,一般是将结果赋值给其它的成员
export default {
data(){
return {
name:'',
value:''
}
},
watch:{
// 这个名字不能随意,只能和你想侦听的属性名称完全一致
// 我们不能手动调用
// 侦听器也没有返回值,所以一般是将处理结果赋值给其它的变量
name(n,o){
this.value = n.toUpperCase()
}
}
}
三.侦听器的其它选项
immediate 选项
- 默认情况下,组件在初次加载完毕后不会调用 watch 侦听器。
- 如果想让 watch 侦听器立即被调用,则需要使用
immediate
选项 - 这个时候需要注意侦听器需要定义为对象的形式,以便让我们能够添加选项配置
deep选项
- 如果 watch 侦听的是一个对象,如果对象中的属性值发生了变化,则无法被监听到。此时可以使用
deep
选项 - 这个时候需要注意侦听器也需要定义为对象的形式,以便让我们能够添加选项配置
如果只想监听对象中单个属性的变化,也可以按照如下的方式定义 watch 侦听器
四.侦听器的特点(与计算属性的异同)
- 它的命名不能随意,必须和你想侦听的属性名称完全一致
- 它不能手动调用,它是自动触发
- 侦听器侧重于监听单个数据的变化,最终执行特定的业务处理,不需要有任何返回值,如果有需要一般是将结果赋值给另外一个变量
- 它可以侦听异步操作中数据的变化