《跟热饭一起学习vue吧》Part.14 计算属性:computed

简介: 《跟热饭一起学习vue吧》Part.14 计算属性:computed


计算属性:computed


大家一看这个标题:


计算属性 是什么意思?不懂。


computed是什么?怎么用,放在哪?也不懂。


没关系,我第一次学习到这的时候 也不懂。所以我这里简单用土话给新人说一下,我们前面学习过 methods吧?就是用来存放各种js函数的那个vue构造器的属性之一。现在要学的这个computed和它几乎是一样的功能,一样的用法。


所以computed同样写在vue的构造其中:


<script>
var vm = new Vue({
  el: '#app',
  data: {
    message: 'Runoob!'
  },
  methods:{}
  computed: {}
})
</script>


既然都是存放函数的,那么为什么vue作者要弄俩个呢?闲的?当然不是。这俩个虽然在肉眼看起来效果是一样的,但是实际的触发原理却不同。


methods 每次渲染刷新都会触发函数运行。


computed 则只会在检测到依赖的元素或变量发生变化时才会重新运行,其他时候都是使用缓存。


所以这么看起来,computed的性能更好,更适合运转和计算一些复杂耗时的函数。


所以我们才会这么说它:计算属性 。


属性,谁的属性?vue构造器的属性。干嘛的?专门管计算的。


那么怎么使用呢?看这个菜鸟教程的例子:


image.png


上图中,我画上了里面的数据流转路线。


在dom层里的具体标签中,用{{ 函数名 }} 的方式调用了 在computed中的对应函数,这个函数return 的值就会最终显示到 dom的元素标签内。而里面的this.message 指的就是 vue构造器的data当中的同名变量了。


computed 的特有默认属性 get子函数



computed 给自己的内部设置了一种特殊格式的管理方案:

computed: {
    site: {
      get: function () {return this.name + ' ' + this.url}
    }
  }


注意,这里的site只是这个集合的名字而已,你可以随意更改,但是内部的get 方法是固定的名字,你不能更改。


而当你这样写的时候,get就会自动运行,并返回数据给 调用了 site的元素:


<p>{{ site }}</p>


如果你的get方法名字改成别的,那么就不会运行,只有get是自动运行的。


image.png

你可能会问,为什么要这么麻烦?我直接写个site函数里面直接return不好么?非要套这么一层干什么?


这也是我一开始疑惑的地方,但是后来我看到了它的其他用法才明白, 这个computer属性其实和data属性也是有类似功能的重合,它提供了获取功能,但是很多老手喜欢再写个修改变量的方法,也就是set。


那么这时候get和set就是一对,他们的可能都是对某个data变量进行操控,所以就干脆用个site:{} 给它们包起来.....


不过这个set要自己额外的写。


image.png


当然这个用法,现在我们会用,但是并不是完全理解为什么要这么麻烦,存在的意义是什么,我们用其他土办法不一样可以实现么?


这其实就是作者在发现了开发者这个频繁修改数据 获取数据的 需求后,帮你封装好的get和set,让你更简单的去完成任务。

相关文章
|
2天前
|
存储 数据采集 供应链
属性描述符初探——Vue实现数据劫持的基础
属性描述符还有很多内容可以挖掘,比如defineProperty与Proxy的区别,比如vue2与vue3实现数据劫持的方式有什么不同,实现效果有哪些差异等,这篇博文只是入门,以后有时间再深挖。 博客不应该只有代码和解决方案,重点应该在于给出解决方案的同时分享思维模式,只有思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
|
4月前
|
JavaScript 前端开发 开发者
vue学习第一章
欢迎来到我的博客!我是瑞雨溪,一名热爱前端的大一学生,专注于JavaScript与Vue,正向全栈进发。博客分享Vue学习心得、命令式与声明式编程对比、列表展示及计数器案例等。关注我,持续更新中!🎉🎉🎉
74 1
vue学习第一章
|
4月前
|
JavaScript 前端开发 索引
vue学习第三章
欢迎来到瑞雨溪的博客,一名热爱JavaScript与Vue的大一学生。本文介绍了Vue中的v-bind指令,包括基本使用、动态绑定class及style等,希望能为你的前端学习之路提供帮助。持续关注,更多精彩内容即将呈现!🎉🎉🎉
73 1
|
4月前
|
缓存 JavaScript 前端开发
vue学习第四章
欢迎来到我的博客!我是瑞雨溪,一名热爱JavaScript与Vue的大一学生。本文介绍了Vue中计算属性的基本与复杂使用、setter/getter、与methods的对比及与侦听器的总结。如果你觉得有用,请关注我,将持续更新更多优质内容!🎉🎉🎉
63 1
vue学习第四章
|
4月前
|
JavaScript 前端开发 算法
vue学习第7章(循环)
欢迎来到瑞雨溪的博客,一名热爱JavaScript和Vue的大一学生。本文介绍了Vue中的v-for指令,包括遍历数组和对象、使用key以及数组的响应式方法等内容,并附有综合练习实例。关注我,将持续更新更多优质文章!🎉🎉🎉
55 1
vue学习第7章(循环)
|
4月前
|
JavaScript 前端开发
vue学习第九章(v-model)
欢迎来到我的博客,我是瑞雨溪,一名热爱JavaScript与Vue的大一学生,自学前端2年半,正向全栈进发。此篇介绍v-model在不同表单元素中的应用及修饰符的使用,希望能对你有所帮助。关注我,持续更新中!🎉🎉🎉
67 1
vue学习第九章(v-model)
|
4月前
|
JavaScript 前端开发 开发者
vue学习第十章(组件开发)
欢迎来到瑞雨溪的博客,一名热爱JavaScript与Vue的大一学生。本文深入讲解Vue组件的基本使用、全局与局部组件、父子组件通信及数据传递等内容,适合前端开发者学习参考。持续更新中,期待您的关注!🎉🎉🎉
69 1
vue学习第十章(组件开发)
|
4月前
|
JavaScript 前端开发
vue学习第十一章(组件开发2)
欢迎来到我的博客,我是瑞雨溪,一名自学前端两年半的大一学生,专注于JavaScript与Vue。本文介绍Vue中的插槽(slot)使用方法,包括基本插槽、具名插槽及作用域插槽,帮助你在组件开发中实现内容的灵活定制。如果你觉得有帮助,请关注我,持续更新中!🎉🎉🎉
47 1
vue学习第十一章(组件开发2)
|
4月前
|
监控 JavaScript 前端开发
vue学习第十二章(生命周期)
欢迎来到我的博客,我是瑞雨溪,一名热爱JavaScript和Vue的大一学生。本文深入探讨了Vue实例的生命周期,从初始化到销毁各阶段的关键钩子函数及其应用场景,帮助你更好地理解Vue的工作原理。如果你觉得有帮助,欢迎关注我,将持续分享更多优质内容!🎉🎉🎉
78 1
vue学习第十二章(生命周期)
|
4月前
|
存储 缓存 JavaScript
在 Vue 中使用 computed 和 watch 时,性能问题探讨
本文探讨了在 Vue.js 中使用 computed 计算属性和 watch 监听器时可能遇到的性能问题,并提供了优化建议,帮助开发者提高应用性能。

热门文章

最新文章