文章目录

  • 1、实例
  • 2、computed计算属性中:
    • 前提1、当计算属性fn2没有依赖data中的数据时:
    • 前提2、:当计算属性依赖data中的数据时:
  • 3、区别:

在做项目过程中,有时会出现同一个需求,在methods属性中写方法可以实现需求,在computed属性中写方法也可以实现需求。那么,既然在methods属性中可以实现我想要的需求,为什么还会有computed计算属性呢?接下来,我们一起看看两者之间有什么区别。

1、实例

<p>methods中方法</p>
//fn1是方法,调用方法需要加()<p>{{fn1()}}</p><p>{{fn1()}}</p><p>{{fn1()}}</p>
methods: {fn1() {console.log('fn1------------');return new Date()}}

执行结果:



通过执行结果,可以看出:
methods中的方法:每调用一次,就触发一次。

<p>computed中的方法</p>
// fn2是属性,调用时不能加()【看着像是方法,其实是属性(计算属性)】<p>{{fn2}}</p><p>{{fn2}}</p><p>{{fn2}}</p>
computed: {fn2() {console.log('fn2------------');return new Date()}},

执行结果:

通过执行结果,可以看出:计算属性fn2调用3次,但是实际执行输出只打印1次。也就是说,计算属性fn2多次调用,一次执行。

2、computed计算属性中:

前提1、当计算属性fn2没有依赖data中的数据时:

结果:第一次使用计算属性时,会把第一次的结果进行缓存。后面再使用几次计算属性,都会去第一次的结果进行查找。
计算属性使用时不加()。
methods中的方法调用几次就会执行几次,没有缓存,性能较低;
computed中的函数多次调用时只会调用一次,多次执行,是有缓存的,性能较高。

前提2、:当计算属性依赖data中的数据时:

data中数据发生变化(与上一次缓存的数据比较)才会调用计算属性中的方法。例如上一篇博客中的例子(相关代码在上一篇博客中:Vue项目中如何使用computed计算属性):

3、区别:

methods和computed看起来都可以实现我们的功能,为什么还要多一个计算属性这个东西呢?

原因:计算属性会进行缓存,如果多次使用时,计算属性没有依赖data中的数据,计算属性只会调用一次。如果计算属性依赖data中的数据时,只有当data中的数据发生变化(与它最近一次的缓存数据相比),计算属性才会被调用执行,否则不会被调用,只会从缓存中拿数据。
methods 方法和computed计算属性 两者的执行结果是完全相同的。

【计算属性是基于它们的依赖进行缓存的,只有在相关依赖发生变化时它们才会重新求值。也就是说,只要它的依赖没有发生变化,那么每次访问的时候,计算属性都会立即返回之前的计算结果。不再执行函数。
methods方法,每当触发重新渲染时,调用方法将总是再次执行函数。
计算属性具有缓存功能,而methods没有。

所以,上面的例子中,当多次调用methods方法时,fn1会被打印3次,而当多次调用计算属性时,第一次调用时,会把属性值进行缓存, 会打印出一个fn2),当第二次调用时,会先把属性值和缓存中的值作比较,如果值没有改变,则会直接从缓存中取值进行渲染。以此类推,由于调用3次fn2,而属性值一直没有改变过,所以实际上只会调用一次fn2,打印输出一次fn2。其余2次的渲染结果 都是从缓存中获取的属性值。计算价格的同理。】

关于Vue中计算属性computed和methods属性的区别,你了解多少呢相关推荐

  1. Vue中watch、computed、updated三者的区别以及使用方法

    1.watch 理解: 监听器,监听某个数据的变化从而来执行一些操作,当data里面的数据发生变化的时候来执行一下开销较大或异步的操作 1.监听值类型(简单类型)数据 //在一个vue实例中new V ...

  2. vue中计算属性computed传递参数

    vue中computed计算属性无法直接进行传参,如果有传参数的需求可以使用闭包函数(也叫匿名函数)实现.例如传过来不同的状态,我们设置成不同的颜色.(三目运算符可以实现但是只能设置两种,状态多了就不 ...

  3. Vue初学——计算属性Computed和Methods

    methods methods是一个vue对象中的属性,而在这个属性中,写的是种种要实现的方法. computed computed是一个属性,在属性中写的也是要实现的方法,那其中同方法一样的写法,总 ...

  4. vue中Computed、Methods、Watch区别

    一.methods.watch.computed的区别 computed 属性的结果会被缓存,除非依赖的响应式属性变化才会重新计算,主要当作属性来使用: methods 方法表示一个具体的操作,主要书 ...

  5. Vue中计算属性和axios基本使用回顾

    目录 1. 什么是计算属性 2. 计算属性的特点 3. 如何声明计算属性 4. 计算属性的使用注意点 5. 计算属性 vs 方法 6.axios axios 的基本使用 1. 发起 GET 请求: 2 ...

  6. Vue中data和computed的区别

    First data 和 computed都是响应式的,先看看官方的说法: Data: Vue 实例的数据对象.Vue 将会递归将 data 的属性转换为 getter/setter,从而让 data ...

  7. 实现 VUE 中 MVVM - step10 - Computed

    看这篇之前,如果没有看过之前的文章,移步查看: 实现 VUE 中 MVVM - step1 - defineProperty 实现 VUE 中 MVVM - step2 - Dep 实现 VUE 中 ...

  8. 关于vue中watch和computed

    computed:计算属性    通过属性计算的来的属性 1.computed里面的函数建议有返回值,不建议去修改data中的属性 2.在使用computed中的方法时,是不需要加() 3.compu ...

  9. Vue中watch、computed、updated的区别

    watch watch:侦听器,监听某个数据的变化然后执行相对应的方法,来响应数据的变化,尤其是当需要数据变化时执行异步操作或着开销较大时,这个方式是最有用的 <div id="wat ...

最新文章

  1. Linux安装图解全过程(Linux Text文本界面安装)
  2. 从人类交互通信发展简史看元宇宙发展趋势及商业价值
  3. linux文件系统构成部分及磁盘分区要点
  4. 合理提升WEB前端性能
  5. Web 四种常见的POST提交数据方式
  6. android MotionEvent中getX()和getRawX()的区别
  7. 学生管理系统Java版
  8. DDD专家张逸:复杂与架构演进的关系
  9. 05 ansible剧本编写
  10. 什么是redis缓存穿透, 缓存雪崩, 缓存击穿
  11. amcharts去除版权标志
  12. 一、bootstrap table 初体验
  13. Swift 反射 API 及用法
  14. 深度学习:Seq2seq模型
  15. 视频号里的视频怎么保存到本地
  16. 【转录调控网络】代谢组学与其他组学的联合分析经典模式简介
  17. 云顶之弈怎么防止被机器人拉_云顶之奕机器人勾人规律和原理-云顶之奕机器人勾人技巧讲解...
  18. 申请计算机课代表,课代表申请书的格式是怎样的啊???
  19. 淫荡气息溢满魔都……
  20. 疑似网易泄露用户密码事件浅析

热门文章

  1. (转)java redis使用之利用jedis实现redis消息队列
  2. 启动项目后,FileItemFactory 错误
  3. (一四三)类设计回顾
  4. 谈谈:.Net中的序列化和反序列化
  5. 避免强光的一些注意点
  6. Errors were encountered while processing 解决方法
  7. xfce的开始菜单增加搜索框
  8. 为什么不同的深度学习框架要使用不同的保存格式(转)
  9. 侯捷面向对象编程C++
  10. mysql下拉框记忆,Mysql alter语句记忆分析