watch侦听器
程序员文章站
2022-05-16 22:06:28
...
一、概念
watch侦听器允许开发者监视数据的变化,从而针对数据的变化做特定的操作。例如,监视用户名变化发起请求,判断是否可用。
二、用法
<input type="text" class="form-control" v-model.trim="username">
data() {
return {
username: ""
}
},
watch: {
username(newVal,oldVal) {
console.log(newVal,oldVal)
}
}
三、使用watch检测用户名是否可用
监听username值的变化,并使用axios发起Ajax请求,检测当前输入的用户是否可用:
安装axios:npm i axios -S
<input type="text" class="form-control" v-model.trim="username">
<script>
import axios from 'axios'
export default {
name: "MyWatch",
data() {
return {
username: ""
}
},
watch: {
async username(newVal,oldVal) {
console.log(newVal,oldVal)
const {data:res} = await axios.get('https://www.escook.cn/api/finduser/' + newVal)
console.log(res)
}
}
}
</script>
四、immediate选项
默认情况下,组件在初次加载后不会调用watch侦听器。如果想watch立即被调用则用immediate选项。
<script>
import axios from 'axios'
export default {
name: "MyWatch",
data() {
return {
username: "admin"
}
},
watch: {
username: {
async handler(newVal,oldVal) {
const {data:res} = await axios.get('https://www.escook.cn/api/finduser/' + newVal)
console.log(res)
},
//立即触发watch
immediate: true
}
}
}
</script>
五、deep选项(缺点:监听对象全部属性)
当watch侦听的是一个对象,则对象属性值发生变化,无法被监听到。就需要使用deep选项。
<input type="text" class="form-control" v-model.trim="info.username">
<script>
import axios from 'axios'
export default {
name: "MyWatch",
data() {
return {
username: "admin",
info: {
username: '奥特曼'
}
}
},
watch: {
info: {
async handler(newVal) {
const {data:res} = await axios.get('https://www.escook.cn/api/finduser/' + newVal.username)
console.log(res)
},
deep: true,
}
},
}
</script>
六、监听对象中单个属性的变化
<script>
import axios from 'axios'
export default {
name: "MyWatch",
data() {
return {
username: "admin",
info: {
username: '奥特曼',
password: '123'
}
}
},
watch: {
'info.username': {
async handler(newVal) {
const {data:res} = await axios.get('https://www.escook.cn/api/finduser/' + newVal)
console.log(res)
}
}
},
}
</script>
七、计算属性vs侦听器的区别
侧重的应用场景不同:
计算属性:监听多个值变化,最终计算并返回一个新值。
侦听器侧重于监听单个数据的变化,最终执行特定的业务处理哦,不需要任何返回值。
推荐阅读
-
vue-watch如何监听非DOM元素的事件
-
Apple Watch中怎么使用微信发送语音?
-
Apple Watch续航怎么样?苹果官方公布Apple Watch最多可持续使用72小时
-
用手表刷朋友圈!苹果Apple Watch更多丰富应用功能一览
-
苹果Apple Watch图赏+试玩视频 行货最贵要价12万6
-
Apple Watch首发地区及发售预约时间公布
-
apple watch怎么充电?apple watch无线充电教程
-
2015苹果手表Apple Watch发布会哪里看?发布会视频全程及看点汇总
-
苹果手表Apple Watch的Glance有哪些功能?
-
苹果Apple Watch行货售价出炉 最贵为126800元