vue中watch、computed、methods区别

13 篇文章 0 订阅
7 篇文章 0 订阅

1.watch侦听器
用于观察和监听页面上的vue实例,当需要在数据变化时执行异步或开销较大的操作时可使用,需要在data()先定义。
执行顺序:beforeCreate-watch-created。

watch: {
    firstName: function (newVal,oldVal) {
       console.log("第一次没有执行");
       this.fullName = newVal + "·" + this.lastName;
    },
    lastName:function(val){
       this.fullName = this.firstName+val
    }
}

watch的handler方法和immediate属性
watch第一次不会执行,需要加handler方法和immediate: true第一次才会执行。

watch: {
    firstName: {
      handler(val) {
        console.log("第一次执行了", val);
        this.fullName = val + "·" + this.lastName;
      },
      immediate: true, //在watch中声明后立即执行handler
    },
},

watch的deep属性
vue无法检测到对象属性的添加或者删除,加上deep则可以检测。使用deep属性会给每一层都加上监听器,性能开销非常大,不建议使用,可以使用字符串监听。

data() {
    return {
        item: {
            a: "",
            b: "",
        },
    }
},
watch: {
    // 加上deep,性能开销大
    item: {
      handler(val) {
        console.log("item.a changed", val);
      },
      immediate: true,
      deep: true,
    },
    // 不用deep,使用字符串监听
    "item.a": {
      handler(val) {
        console.log("item.a changed", val);
      },
      immediate: true,
    },
},

2.computed计算属性
依赖于其他数值变化,有缓存,只有其他数值发生变化才会调用,不需要在data()先定义,默认只有get,也可以使用set。
执行顺序:created-computed-mounted。

computed: {
    // fullName: function () {
    //  return this.firstName + " " + this.lastName;
    //},
    fullName: {
      // getter
      get() {
        console.log("computed");
        return this.firstName + " " + this.lastName;
      },
      // setter
      set(newValue) {
        const names = newValue.split(" ");
        this.firstName = names[0];
        this.lastName = names[names.length - 1];
      },
    },
},

3.methods方法
只要调用就会重新执行一次。

参考博客:https://segmentfault.com/a/1190000019658505

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值