Vue 3.0 组件高级(上)

一、watch 侦听器

1. watch 基本用法

监视数据的变化,从而针对数据的变化做特定的操作。

export default{
    data(){
        return { username: ''}
    },
    //监听username的值的变化
    //形参列表中,第一个值是“变化后的新值”,第二个值是“变化之前的旧值”
    watch: {
        username(newVal,oldVal){
            console.log(newVal,oldVal)
        },
    },
}

2. 使用 watch 检测用户名是否可用

监听 username 值的变化,并使用 axios 发起 Ajax 请求,检测当前输入的用户名是否可用:

import axios from 'axios'
export default {
    data(){
        return { username: ''}
    },
    watch:{
        async username(newVal, oldVal){
            const { data: res} = await axios.get("https://www........")
            console.log(res)
        },
    },
}

3. immediate 选项

默认情况下,组件在初次加载完毕后不会调用 watch 侦听器。如果想让 watch 侦听器立即被调用,则需要使用 immediate 选项。

watch: {
    //1. 监听username值的变化
    username:{
        //2. handler属性是固定写法,当username变化时,调用handler
        async handler(newVal, oldVal){
            const { data: res} = await axios.get("https://www........")
            console.log(res)
        },
        //3. 表示组件加载完毕后立即调用一次当前的watch监听器
        immediate: true
    }
}

4. deep 选项

当 watch 侦听的是一个对象,如果对象中的属性值发生了变化,则无法被监听到。

<input type="text" v-model.trim="info.username">
data(){
    return {
        info: {username: 'admin'}
    }
},
watch:{
    info: {
        async handler(newVal, oldVal){
            const { data: res} = await axios.get("https://www........")
            console.log(res)
        }
        //需要用deep,否则username值变化无法被监听到
        deep: true
    }
}

5. 监听对象单个属性的变化

data(){
    return {
        info: {username: 'admin',password:''}
    }
},
watch:{
    'info.username': { //只想监听info.username属性值的变化
        async handler(newVal, oldVal){
            const {
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值