vue2的计算属性computed与侦听器watch的区别

240 阅读1分钟

一、概述

computed 和 watch 都是vue框架中监听数据变化的属性

二、计算属性 computed

  • 依赖于其他属性的值,并且computed的值有缓存
  • 只有它依赖属性的值发生改变 下一次获取computed的值才会重新计算
  • 必须有return返回
  • 使用方法与data中的数据一样
  • 使用场景 如:购物车

三、监听属性 watch

  • watch中的函数有两个参数(newData,oldData)
  • 当一个属性值发生变化时,需要执行相应的操作
  • 监听的数据必须是data中声明的或者是父组件通过props传递过来的,放发生变化时,会触发其他的操作,函数有两个参数
  1. immediate 组件加载立即触发回调函数
  2. deep 深度监听,发生数据的内部变化,在负责数据类型中使用。例如 在数组中的数据发生变化 需要注意的是deep无法监听到数组或对象内部的变化
  • 使用场景 如搜索框

四、区别

  1. 功能:computed是一个计算属性,依赖其他属性的改变;watch是监听一个值得变化而执行对应的回调
  2. 是否调用缓存:computed函数所依赖的属性不变的时候会调用缓存;watch每次监听的值发生变化时候都会调用回调
  3. 是否调用return:computed必须有;watch可以没有
  4. 是否支持异步:computed函数不能有异步;watch可以