Vue中的 computed(计算属性)与 watch(监视属性)
Vue中的 computed(计算属性)与 watch(监视属性)
-
计算属性写法(非简写形式)
computed: { fullName: { get(){ return 'zml' }, set(value){ ... } } }
那什么时候 get()会被调用呢?
首先我们得知道,computed 是有缓存的。假如你模板中有多个地方用到了
fullName
,那么它只会读第一次,即此时 get()方法只会被调用一次,后面读的都是缓存- 初次读取时
- 所依赖的数据发生变化时
-
监视属性写法(非常规)
vm.$watch('name',{ ... handler(newValue, oldValue){ ... } })
这两属性之间的区别
- watch 里面可以有异步任务
- computed 中也可以写异步,但是它是要靠 return 来返回值的,根据事件队列来讲,你异步里面写的东西没啥效果(但最终会被执行),因为 return 早就执行了
总结:能用计算属性就用计算属性,因为计算属性相对来讲实现要简单一些;计算属性实现不了了,我们再考虑监视属性
这一路,灯火通明