2021-06-01

vue中的watch和$watch的用法和区别

今天给大家分享一下vue中的watch和($watch),在项目开发时候遇到了一个问题就是在编辑页面初次加载时候需要监听一个数组的变化,

但是又不想用watch来一直占用性能,于是便用到了$watch来监听之后来取消监听。

两者区别

两者都用来监听data中定义的属性的变化,但是vm.$watch 返回一个取消观察函数,用来停止触发回调:大家看代码,我简单写了一个demo

<template>
  <div class="about">
    <div class="box">我是watch组件</div>
    <el-button class="box" @click="dataArrAdd()">向数组中添加元素</el-button>
    <div class="box" v-if="showBtn">添加成功</div>
  </div>
</template>
<script>
export default {
  name: "watch",
  data() {
    return {
      dataArr: [],
      showBtn: false,
    };
  },
  //watch: {
  //  dataArr:function(newval,old) {
   //   console.log(newval);
   //     console.log(old);
  //    this.showBtn = !this.showBtn;
 //   },
  },
  created() {
    let unDataArr = this.$watch(
      () => {
        return this.dataArr;
      },
      function(newval,old)  {
        console.log(newval);
        console.log(old);
        this.showBtn = !this.showBtn;
         unDataArr();
      }
    );
  },
  methods: {
    dataArrAdd() {
      this.dataArr.push("1");
    },
  },
};

如果调用unDataArr()那么在执行一次监听事件后就会移除监听,当我们遇到类似的需求可以采用这种方式,$watch中第一个参数是监听的对象,我们可以看到这样的写法类似于监听一个未被定义的计算属性,只要return的值发生变化,函数就会调用,第二个参数是function (newVal, oldVal) {
// 做点什么
}和watch的写法一样

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值