Vue的计算属性与methods、watch的区别,附项目源码

26 阅读4分钟

最后

由于篇幅限制,pdf文档的详解资料太全面,细节内容实在太多啦,所以只把部分知识点截图出来粗略的介绍,每个小节点里面都有更细化的内容!

开源分享:docs.qq.com/doc/DSmRnRG…

总价:{{totalMoney}}

. new Vue({

el:'#mytable',

List:[

{id:1,money:2,num:2},

{id:2,money:3,num:2},

{id:3,money:4,num:2},

] })

虽然在methods中也能得出总价,但事实上,vue给我们提供了一个特别好的解决方案叫:计算属性

计算属性是vue实例中的一个配置选项:computed

通常里面都是一个个计算相关的函数,返回最后计算出来的值。

即我们可以把这些计算的过程写到一个计算属性中去,然后让它动态的计算。

computed:{ //计算属性

totalMoney:function () {

let result =0

this.List.filter(item=>{

result+=item.money*item.num

})

return result

}

当调用多个同样的方法时再看一个示例:

{{one}}{{two}}

{{getAll()}}

{{getAll()}}

{{getAll()}}

{{getAll()}}

{{All}}

{{All}}

{{All}}

{{All}}

name:"About",

data(){

return{

one:"我是第一个",

two:"我是第二个"

}

},

computed:{

All:function () {

console.log("我是computed计算出来的")

return this.one+""+this.two

}

},

methods:{

getAll:function () {

console.log("我是methods计算出来的")

return this.one+""+this.two

}

},

}

看看打印结果

在这里插入图片描述

打印了四次methods方法而computed只有一次。

computed

把新的数据缓存下来,当其他的依赖数据没有发生改变,它调用的是缓存的数据,这就极大的提高了我们程序的性能。(只有当被计算的属性发生改变时才会触发)

methods

数据根本没有缓存的概念,所以每次都会重新计算。

Computed与Watch的区别


1、computed支持缓存,只有依赖数据发生改变,才会重新进行计算;而watch不支持缓存,数据变,直接会触发相应的操作。

2、computed不支持异步, 当computed内有异步操作时无效,无法监听数据的变化;而watch支持异步

3、computed属性值会默认走缓存,计算属性是基于它们的响应式依赖进行缓存的,也就是基于data中

声明过或者父组件传递的props中的数据通过计算得到的值;而watch监听的函数接收两个参数,第一个参数是最新的值,第二个 参数是输入之前的值。

4、如果一个属性是由其它属性计算而来的,这个属性依赖其它属性,是一个多对一或者一对一,一般用

computed;而当一个属性发生变化时,需要执行对应的操作; 一对多一般用watch。

5、如果computed属性属性值是函数,那么默认会走get方法;函数的返回值就是属性的属性值;在

computed中的,属性都有一个get和一个set方法,当数据变化时,调用set方法。 而watch监听数据必须是data中声明过或者父组件传递过来的props中的数据,当数据变化时,触发其它操作,函数有两个参数。

data(){

return{

'myname':2

}

},

watch:{

myName(){

最后

一个好的心态和一个坚持的心很重要,很多冲着高薪的人想学习前端,但是能学到最后的没有几个,遇到困难就放弃了,这种人到处都是,就是因为有的东西难,所以他的回报才很大,我们评判一个前端开发者是什么水平,就是他解决问题的能力有多强。

开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】

分享一些前端面试题以及学习路线给大家