vue中的方法、计算属性和侦听器的区别

计算属性 和方法的区别
<div id="app">
   {{ name }}  {{ age }} 
    <br>
    {{ getPreson1() }}
    <br>
    {{ getPreson2 }}
    <br>
    {{ preson }}
</div>

var vm = new Vue({
	 el:"#app",
     data: {
         // 前提:后台给的
         name : "wh",
         age : 21,
         msg : "哈哈哈哈",
         preson :''
     },
     methods : {//方法   只要调用它,函数就会执行
         getPreson1() {
             console.log("test1");
             // 属性放在methods中,修改其他不相关的属性的时候会触发methods中方法
             // 对性能造成影响
             return `姓名:${ this.name }年龄:${ this.age }`
         }
     },
     computed : { //计算属性
         getPreson2(){  //计算属性是不需要调用,直接使用
             // 计算属性相当于做了一层缓存,只要不涉及修改的值从缓存中取值
             // 只有在涉及到数据更改的时候才会重新执行该函数
             console.log("test2")
             return `姓名:${this.name}年龄:${this.age}`
         }
     },
})

当修改msg这个数据是,methods 中getPreson1会打印 test1,而computed不会

说明计算属性computed是基于它们的依赖进行缓存的,只有相关依赖会发生改变时才会重新求值。只要相关依赖未改变,只会返回缓存中的结果,不会执行函数。
而methods,只要调用它,函数就会执行

侦听器
 //侦听一个数据的变化
  watch:{ //观察  函数,对象
     name(newVal){  //name被修改就会被触发
          //newVal改变name以后的新值
          //监听数据必须先存在
          this.preson = `姓名:${this.name}年龄:${this.age}`
      },
      age(newVal){
          this.preson = `姓名:${this.name}年龄:${this.age}`
      }
  }

computed和watch的区别

  1. computed可以观察多个数据,watch只能是一个数据
  2. computed生成一个新的数据,直接渲染至视图中,watch是修改本身已经存在的数据
  3. computed不可以执行异步的,因为需要返回值,返回值是由js主线程控制,watch可以执行异步的,因为不需要返回数据,定时器是属于异步的线程
  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值