vue3 watch侦听响应式数据案例

<script setup>
import { ref, reactive, watch, watchEffect } from 'vue'

let sum = ref(0)
let name = ref('叶志远')
let person = reactive({
    name: '叶志远',
    age: 25,
    job: {
        j1: {
            salary: 9
        }
    }
})
let city = reactive(['广州', '深圳', '佛山'])

// 情况一, 监听一个响应式数据
// watch(sum, (newVal, oldVal) => {
//     console.log('监听sum++', newVal, oldVal)
// })

// 情况二、监听多个响应式数据
// watch([sum, name], (newVal, oldVal) => {
//     console.log('监听sum++与修改名字', newVal, oldVal)
// })

// 情况三、监听一个响应式对象、默认会开启深度监听、无法获取旧值
// watch(person, (newVal, oldVal) => {
//     console.log('监听person', newVal, oldVal)
// })

// 情况四、监听响应式对象属性
// watch(() => person.job.j1.salary, (newVal, oldVal) => {
//     console.log('监听涨薪', newVal, oldVal)
// })

// 情况五、监听响应式对象的对象属性、要开启深度监听、否则无法监听
// watch(() => person.job, (newVal, oldVal) => {
//     console.log('监听涨薪', newVal, oldVal)
// }, { deep: true })

// 情况六、监听数组
watch(city, (newVal, oldVal) => {
    console.log('监听城市', newVal, oldVal)
})

// 情况七、立即监听、使用了哪几个响应式数据会自动追踪并且监听
watchEffect(() => {
    let myName = name.value
    let s1 = sum.value
    console.log(s1)
    console.log(myName)
})

let i = 0
let changeCity = () => {
    city[i] = city[i]+'-'+i
    i < 2 ? i++ : i = 0
}
</script>

<template>
    <h2>{{ sum }}</h2>
    <button @click="sum++">加加</button>
    <hr />
    <h2>{{ name }}</h2>
    <button @click="name+='!'">修改姓名</button>
    <hr/>
    <h2>姓名:{{ person.name }}</h2>
    <h2>年龄:{{ person.age }}</h2>
    <h2>薪资:{{ person.job.j1.salary }}k</h2>
    <h2>城市:{{ city }}</h2>
    <button @click="person.name+='~'">修改姓名</button>
    <button @click="person.job.j1.salary++">涨薪</button>
    <button @click="changeCity">切换城市</button>
</template>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

1条粉肠

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值