以二级联动的实现讲解Vue2中计算属性computed与侦听属性watch的使用

以二级联动的实现讲解Vue2中计算属性computed与侦听属性watch的使用
以二级联动的实现讲解Vue2中计算属性computed与侦听属性watch的使用
上述联动的select如何用vue实现呢?

1.1使用watch方法

以二级联动的实现讲解Vue2中计算属性computed与侦听属性watch的使用

  1. 当监听的对象发生变化时,watch里的handler函数会自动调用;监听的对象既可以是data里的,也可以是computed里的计算属性;
  2. 如果不需要配置deep或immediate属性时,watch里的方法可以简写,如上图;
  3. deep属性:默认情况下,watch 是浅层的,只观察对象本身(一层)的变化,不会观察对象内部属性的变化。配置上deep后可以检测对象内部值的改变(多层);
  4. immediate属性:不设置immediate属性时,它的值默认为false,初始化时不会执行;当 immediate 设置为 true 时,watch 的回调会在初始化时立即执行一次,而不是等到被观察的数据第一次变化时才执行;
  5. 除了上述写法外,还可以使用命令式的 vm.$watch ,因为我们代码中没有这种写法,故了解即可。
1.2使用computed方法

以二级联动的实现讲解Vue2中计算属性computed与侦听属性watch的使用

  1. 计算属性定义:要用的属性不存在,要通过已有属性计算得到;
  2. 计算属性里get函数什么时候执行:1:初次读取时会执行一次  2:当依赖的数据发生改变时会再次调用;
  3. 计算属性什么时候可以简写:不需要用到set函数修改属性值时可以简写,如上图。
  4. Vue官网-计算属性相关的风格指南:v2.cn.vuejs.org/v2/style-gu…
疑问1:我们为啥要用计算属性computed?

以二级联动的实现讲解Vue2中计算属性computed与侦听属性watch的使用

疑问2:为啥Vue2的官网文档上更推荐使用计算属性computed而不是侦听属性watch呢?

以二级联动的实现讲解Vue2中计算属性computed与侦听属性watch的使用
上述两张截图来自Vue官网地址:v2.cn.vuejs.org/v2/guide/co…

1.3比较各种情况下使用computed和watch的优缺点
1.3.1以计算调整后额度为例

以二级联动的实现讲解Vue2中计算属性computed与侦听属性watch的使用

1.3.1.1使用普通方法实现

以二级联动的实现讲解Vue2中计算属性computed与侦听属性watch的使用

以二级联动的实现讲解Vue2中计算属性computed与侦听属性watch的使用

以二级联动的实现讲解Vue2中计算属性computed与侦听属性watch的使用
改变vue实例data里的任意数据都会重新解析模板,此时vue实例读到以二级联动的实现讲解Vue2中计算属性computed与侦听属性watch的使用时会调用这个方法以二级联动的实现讲解Vue2中计算属性computed与侦听属性watch的使用

1.3.1.2使用computed实现

以二级联动的实现讲解Vue2中计算属性computed与侦听属性watch的使用
与methods实现相比,内部有缓存机制,只有依赖的数据发生改变时才会再次调用,效率更高

**但如果我想一秒后再返回呢?用computed可以吗?
**

以二级联动的实现讲解Vue2中计算属性computed与侦听属性watch的使用
大家可以试试,不报错,但是也没有返回,为什么呢?

因为异步操作(如 API 调用、定时器或 Promise)的特性与 computed 属性的这种缓存机制不兼容,异步操作意味着结果不是立即可用的,而是在某个未来的时间点返回,而 computed 属性是期望能够立即返回一个结果。

1.3.1.3使用watch实现

以二级联动的实现讲解Vue2中计算属性computed与侦听属性watch的使用
computed可以完成的功能,wach都可以完成

**但如果我想一秒后再计算呢?用可以吗?
**
以二级联动的实现讲解Vue2中计算属性computed与侦听属性watch的使用
经验证是可以的,说明watch是允许我们执行异步操作的

computed和watch使用小结
  • 1:如果:需要基于已有的属性进行计算并生出一个新的值,那么应该使用 computed
  • 2:如果你需要在数据变化时执行异步或开销较大的操作,那么应该使用 watch
  • 3:在可能的情况下,尽量使用 computed,因为它提供了更好的缓存机制,可以避免不必要的计算和性能开销。

原文链接:https://juejin.cn/post/7351649413402640436 作者:王小菲

(0)
上一篇 2024年3月30日 下午4:28
下一篇 2024年3月30日 下午4:34

相关推荐

发表回复

登录后才能评论