vue2.0的计算属性computed和watch的区别及各自使用场景解读

 更新时间:2023年01月20日 09:04:51   作者:huangzhin  
这篇文章主要介绍了vue2.0的计算属性computed和watch的区别及各自使用场景,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

计算属性computed和watch的区别及各自使用场景

computed:通过属性计算而得来的属性 

1

1、computed内部的函数在调用时不加()。即vm.属性名,如vm.reversedMessage

2、computed是依赖vm中data的属性变化而变化的,也就是说,当data中的属性发生改变的时候,当前函数才会执行,data中的属性没有改变的时候,当前函数不会执行。

3、computed中的函数必须用return返回。

4、注意:在computed中不要对data中的属性进行赋值操作。如果对data中的属性进行赋值操作了,就是data中的属性发生改变,从而触发computed中的函数,形成死循环了。

5、当computed中的函数所依赖的属性没有发生改变,那么调用当前函数的时候会从缓存中读取。(不会再次计算)

使用场景:当一个值受多个属性影响的时候------------购物车商品结算

watch:属性监听

2

1、watch中的函数名称必须要和data中的属性名一致,因为watch是依赖data中的属性,当data中的属性发生改变的时候,watch中的函数就会执行。

2、watch中的函数有两个参数,前者是newVal,后者是oldVal。

3、watch中的函数是不需要调用的。

4、watch只会监听数据的值是否发生改变,而不会去监听数据的地址是否发生改变。也就是说,watch想要监听引用类型数据的变化,需要进行深度监听。   

  • "obj.name"(){}如果obj的属性太多,这种方法的效率很低,   
  • obj:{handler(newVal){},deep:true}用handler+deep的方式进行深度监听。

5、特殊情况下,watch无法监听到数组的变化,特殊情况就是说更改数组中的数据时,数组已经更改,但是视图没有更新。更改数组必须要用splice()或者$set。

  • this.arr.splice(0,1,100) 修改arr中第0项开始的1个数据为100,
  • this.$set(this.arr,0,100) 修改arr第0项值为100。

6、immediate:true    页面首次加载的时候做一次监听。

使用场景:当一条数据的更改影响到多条数据的时候---------搜索框

区别

1、功能上:computed是计算属性,watch是监听一个值的变化,然后执行对应的回调。

2、是否调用缓存:computed中的函数所依赖的属性没有发生变化,那么调用当前的函数的时候会从缓存中读取,而watch在每次监听的值发生变化的时候都会执行回调。

3、是否调用return:computed中的函数必须要用return返回,watch中的函数不是必须要用return。

4、使用场景:

  • computed当一个属性受多个属性影响的时候,使用computed-------购物车商品结算。
  • watch当一条数据影响多条数据的时候,使用watch-------搜索框。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • vue项目中全局引入1个.scss文件的问题解决

    vue项目中全局引入1个.scss文件的问题解决

    这篇文章主要跟大家介绍了vue项目中全局引入1个.scss文件的问题解决,文中通过示例代码介绍的非常详细,对大家学习或者使用vue具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-08-08
  • 详解vue-cli脚手架中webpack配置方法

    详解vue-cli脚手架中webpack配置方法

    这篇文章主要介绍了详解vue-cli脚手架中webpack配置方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-08-08
  • vue data对象重新赋值无效(未更改)的解决方式

    vue data对象重新赋值无效(未更改)的解决方式

    这篇文章主要介绍了vue data对象重新赋值无效(未更改)的解决方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-07-07
  • 浅谈vue 多个变量同时赋相同值互相影响

    浅谈vue 多个变量同时赋相同值互相影响

    这篇文章主要介绍了浅谈vue 多个变量同时赋相同值互相影响,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-08-08
  • vue-element-admin如何转换成中文

    vue-element-admin如何转换成中文

    这篇文章主要介绍了vue-element-admin如何转换成中文问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-03-03
  • Vue自定义v-has指令实现按钮权限判断

    Vue自定义v-has指令实现按钮权限判断

    这篇文章主要给大家介绍了关于Vue自定义v-has指令实现按钮权限判断的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-04-04
  • element-ui和vue表单(对话框)验证提示语(残留)清除操作

    element-ui和vue表单(对话框)验证提示语(残留)清除操作

    这篇文章主要介绍了element-ui和vue表单(对话框)验证提示语(残留)清除操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-09-09
  • vue中的<template>标签与react中的<></>标签区别详解

    vue中的<template>标签与react中的<></>标签区别详解

    这篇文章主要为大家介绍了vue中的<template>标签与react中的<></>标签区别详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-08-08
  • 3分钟迅速学会Vue中methods方法使用技巧

    3分钟迅速学会Vue中methods方法使用技巧

    最近在学习Vue,感觉methods还是有必有总结一下的,下面这篇文章主要给大家介绍了关于3分钟迅速学会Vue中methods方法使用技巧的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2023-02-02
  • vue backtop组件的实现完整代码

    vue backtop组件的实现完整代码

    这篇文章主要介绍了vue backtop组件的实现完整代码,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-04-04

最新评论