Vue的计算属性缓存computed和methods的区别

本文详细对比了Vue中computed属性和methods方法的使用场景与性能差异。通过字符串反转的例子,阐述了computed基于依赖缓存的特性,仅在依赖变化时重新计算,而methods在每次渲染时都会执行,说明了computed的性能优势。
摘要由CSDN通过智能技术生成

computed和methods的区别

计算属性在处理一些复杂逻辑时是很有用的,当页面需要渲染的时候,计算属性不会发生变化,直接读取使用,适合较大的计算和改变频率较低的属性

如果是methods的话,会造成性能的影响

就拿一个简单的字符串反转例子来说吧:
	<div id="app">
        <p>原本的字符串{{name}}</p>
    </div>
    <script src="./js/vue.js"></script>
    <script>
        var vm=new Vue({
            el:"#app",
            data:{
                name:"Zhang San"
            },
            methods:{},
            computed:{}
        })
    </script>

此时页面上输出的是:
在这里插入图片描述

当我们使用函数来反转这个字符串的时候:
	<div id="app">
        <p>原本的字符串{{name}}</p>
        <p>函数调用反转字符串{{reverseStr()}}</p>
    </div>
    <script src="./js/vue.js"></script>
    <script>
        var vm=new Vue({
            el:"#app",
            data:{
                name:"Zhang San"
            },
            methods:{
                reverseStr(){
                    return this.name.split('').reverse().join('')
                }
            },
            computed:{}
        })
    </script>

此时页面上输出的是:
在这里插入图片描述

当我们使用computed来反转字符串的时候:
	<div id="app">
        <p>原本的字符串{{name}}</p>
        <p>函数调用反转字符串{{reverseStr()}}</p>
        <p>通过计算属性来反转字符串{{reverse}}</p>
    </div>
    <script src="./js/vue.js"></script>
    <script>
        var vm=new Vue({
            el:"#app",
            data:{
                name:"Zhang San"
            },
            methods:{
            //使用函数调用来反转字符串
                reverseStr(){
                    return this.name.split('').reverse().join('')
                }
            },
            //使用计算属性来反转字符串
            computed:{
                //get方法
                reverse(){
                    return this.name.split('').reverse().join('')
                }
            }
        })
    </script>

页面上显示的是:
在这里插入图片描述

总结:我们可以使用 methods 来替代 computed,效果上两个都是一样的,但是 computed 是基于它的依赖缓存,只有相关依赖发生改变时才会重新取值。而使用 methods ,在重新渲染的时候,函数总会重新调用执行。computed 性能会更好,但是如果你不希望缓存,你可以使用 methods 属性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值