Vue知识点总结(7)——计算属性computed(超级详细)

news/2024/7/10 2:45:02 标签: vue, js, html, 前端

这期的主题是Vue的计算属性computed
我们都知道插值表达式{{}},{{}}可以实现双向的数据绑定,并且可以在其中进行一些常规的算数运算和逻辑运算。
但是模板内的表达式非常便利,但是设计它们的初衷是用于简单运算的。在模板中放入太多的逻辑会让模板过重且难以维护,在之前我们可以使用methods实现这种效果,但是computed相比methods来说,速度更快,因为computed是基于依赖缓存的,缓存的特点就是一个字,快!
我们来看一下具体的代码实现。

这是利用methods完成字符串反转的方法。

html"><div id="app">
    <h3>{{reverseMsg()}}</h3>
</div>
<script>
    var app = new Vue({
        el:'#app',
        data:{
            msg:'Hello World!'
        },
        methods: {
             reverseMsg:function(){
               return  this.msg.split('').reverse().join('');
            },
        }
    });
</script>

在这里插入图片描述

这是利用计算属性computed实现字符串反转的方法。

html"><div id="app">
    <h3>{{reverseMsg}}</h3>
</div>
<script>
    var app = new Vue({
        el:'#app',
        data:{
            msg:'Hello World!',
        },
        computed: {
            reverseMsg:function(){
               return  this.msg.split('').reverse().join('');
            },        }
    });
</script>

在这里插入图片描述
都可以正常地完成我们的需求,但是,它们之间还是有区别的。
Vue的官方文档为我们提示了

计算属性是基于它们的响应式依赖进行缓存的,只有相应的响应式依赖发生改变时它们才会重新求值。

这句话是啥意思呢,就是,methods实现这个反转字符串的时候,每次都会执行reverseMsg这个函数,请注意,是每次。。。
但是computed实现这个反转字符串的时候,只有第一次才真正的执行这个函数,并把结果存入缓存中,之后再需要用到的时候,它直接去缓存里面取,不会重复执行这个函数。这还是很有意义的,computed才能在这种需求中实现最佳性能

html"><div id="app">
    <h3>{{reverseMsg}}</h3>
    <h3>{{fullName}}</h3>
    <button @click="handeClick">改变</button>
</div>
<script>
    var app = new Vue({
        el:'#app',
        data:{
            msg:'Hello World!',
            firstName:'Creator',
            lastName:'Ray'
        },
        methods: {
            handeClick(){
                this.msg = '计算属性computed生效!';
                this.lastName = 'God';
            }
        },
        computed: {
            reverseMsg:function(){
               return  this.msg.split('').reverse().join('');
            },
            fullName:function(){
                return this.firstName + this.lastName;
            }
        }
    });
</script>

再看一下这段代码,我们用计算属性关联了fullName,并且我们写了一个按钮,用来改变fullName中这些data值得数据,看一下计算属性发生什么改变。
在这里插入图片描述
很明显,我们点击按钮之后,msglastName的值都发生了变化,并且,因为我们是用计算属性实现这一功能的,所以计算属性的reverseMsgfullName也被执行了。这说明计算属性的绑定是持久性的,并且当对应的值发生变化后,计算属性会立即被执行,还是很方便的。

有微信小程序课设、毕设需求联系个人QQ:505417246

关注下面微信公众号,可以领取微信小程序、Vue、TypeScript、前端、uni-app、全栈、Nodehtml" title=js>js、Python等实战学习资料
最新最全的前端知识总结和项目源码都会第一时间发布到微信公众号,请大家多多关注,谢谢!

在这里插入图片描述


http://www.niftyadmin.cn/n/1576604.html

相关文章

NUC1019 数素数【素数筛选法】

数素数 时间限制: 1000ms 内存限制: 65536KB 问题描述素数是的只能被1和它本身整除的自然数。判断一个数是素数的方法是使用2到该数的平方根的素数除它&#xff0c;若有能整除的则该数不是素数。输入描述本题有多组数据&#xff0c;每组数据由两个正整数M,N组成。&#xff08; …

Vue知识点总结(8)——filter过滤器(超级详细)

Vue.js 允许你自定义过滤器&#xff0c;可被用于一些常见的文本格式化。过滤器可以用在两个地方&#xff1a;双花括号插值和 v-bind 表达式 (后者从 2.1.0 开始支持)。过滤器应该被添加在 JavaScript 表达式的尾部&#xff0c;由“管道”符号指示。 Vue为我们提供了两种过滤器的…

微信小程序云开发实现分页功能(简单易懂)

我们在页面上进行数据展示的时候&#xff0c;无论是pc端还是移动端&#xff0c;很多情况下需要展示很多很多条的数据。 比如商城&#xff0c;商品的数量是非常多的。但是在我们从后台获取数据的时候&#xff0c;数据的传输数量总是有限制的&#xff0c;这也是为了性能考虑&…

Vue知识点总结(9)——局部组件的创建和使用(超级详细)

为什么要组件化开发&#xff1f; 有时候页面代码量太大&#xff0c;逻辑太多或者同一个功能组件在许多页面均有使用&#xff0c;维护起来相当复杂&#xff0c;这个时候&#xff0c;就需要组件化开发来进行功能拆分、组件封装&#xff0c;已达到组件通用性&#xff0c;增强代码可…

JS如何删除数组中指定的内容

如何删除数组中的指定内容&#xff1f; 主要是对splice函数的应用&#xff0c;这个函数很强大&#xff0c;用处非常多。 我们分两种情况处理问题&#xff1a; ①删除数组中的一个指定元素。 array数组中只有一个值为1的元素&#xff0c;我们的任务就是删除这个值为1的元素。 va…

Activiti实战. 1.1什么是Activiti

1.1什么是Activiti 大家第一次接触Activiti的时候不理解它为什么要叫这个名字&#xff0c;从词典中也没有找到对它的解释。可能有人会想到另外一个单词Activity&#xff08;活动&#xff09;&#xff0c;与Activiti仅一个字母之差。在工作流方面有些基础的读者或许能很快理解&a…

Vue知识点总结(10)——全局组件的创建和使用(超级详细)

在上一期我们已经讲解了组件的概念和作用&#xff0c;还有局部组件的封装、挂载和使用。 这期我们说一下全局组件的创建和使用&#xff0c;很简单。 <div id"app"><Vheader></Vheader> </div><script>Vue.component(Vheader,{data ()…

《图数据库(第2版)》导读

前言 图数据库&#xff08;第2版&#xff09;图数据库应对的是当今一个宏观商业世界的大趋势&#xff1a;凭借高度关联的数据中复杂而动态的联系获得洞察力并赢得竞争优势。无论我们想了解的是客户之间的联系&#xff0c;电话或数据中心网络元素之间的联系&#xff0c;娱乐产品…