Vue中的watch的用法及与computed的区别

本文详细介绍了Vue.js中watch的使用,包括基本数据和深度监听对象属性的用法。watcher不仅可以用于在数据变化时执行异步操作,还可以通过immediate属性实现组件初始化时的触发。同时,文章对比了watch和computed的区别,指出watch更适合数据变化时的复杂操作。
摘要由CSDN通过智能技术生成

vue中watch的用法

其实watch它是对data中的数据监听回调,当data中的数据发生变化的时候。监听就会被回调函数中传入两个参数一个newVal另一个为oldVal。

watch的使用场景:当data中的某个数据发生变化时,我们需要做一些异步操作以及开销较大的操作。我们就可以是用watch进行监听。

watch监听基本数据:

<template>
  <div class="contain-wrap">
      <p>个人信息情况: {{ basicMsg }}</p>
      <p>今年的年龄: <input type="text" v-model="age" /></p>
  </div>
</template>
<script>
  export default {
    name: "about",
    components:{},
    data() {
      return {
          basicMsg: '',
          age:"18",
          single: '单身'
      }
    },
    watch:{
      age:{
        handler(newValue,oldValue) {
           console.log("我是新值",newValue)
            console.log("我是旧值",oldValue)
            this.basicMsg = '今年' + newValue + '岁' + ' ' +this.single;
          }
      }
    },
    created() {},
    methods:{},
    mounted(){},
  }
</script>
<style scoped lang="scss">
</style>

现在是监听data中一个基本的数据,当我们在输入框中输入数据,那么就监听这个回调就会被触发。现在有个需求我们想要在页面首次加载的时候让它进行触发一次。我们可以在这个回调函数中添加一个immediate: true属性,就可以第一次加载的时候触发回调。

深度监听data中的数据:
需要在watch回调中设置deep属性,表示是否深度监听某个对象的值

<template>
  <div class="contain-wrap">
       <p>个人信息情况: {{ basicMsg }}</p>
    <p>今年的年龄: <input type="text" v-model="obj.chidren.age" /></p>
  </div>
</template>

<script>
  export default {
    name: "about",
    components:{},
    data() {
      return {
        obj:{
        basicMsg: '',
        chidren:{
          age:"18"
        },
        single: '单身'
        },
      }
    },
  
    watch:{
 'obj.chidren': {
          handler(newVal, oldVal) {
            this.basicMsg = '今年' + newVal.age + '岁' + ' ' + this.obj.single;
          },
          immediate: true,
          deep: true // 需要添加deep为true即可对obj进行深度监听
        }
    },
    created() {},
    methods:{},
    mounted(){},
  }
</script>

<style scoped lang="scss">
</style>

现在就为对象obj中的age属性进行监听,当age属性发生变化的时候就会进行触发。这也同样适用于数组

watch 和 computed的区别是:

相同点:他们两者都是观察页面数据变化的。

不同点:computed只有当依赖的数据变化时才会计算, 当数据没有变化时, 它会读取缓存数据。
watch每次都需要执行函数。watch更适用于数据变化时的异步操作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值