vue.js——computed属性与methods属性的区别

8 篇文章 1 订阅
5 篇文章 0 订阅

methods是一种交互方法,通常是把用户的交互动作写在methods中

computed是一种数据变化时mvc中的module 到 view 的数据转化映射

简单点讲就是methods是需要去人为触发的,而computed是在检测到data数据变化时自动触发的,还有一点就是,性能消耗的区别,这个好解释。

首先,methods是方式,方法计算后垃圾回收机制就把变量回收,所以下次在要求解筛选偶数时它会再次的去求值。而computed会是依赖数据的,就像闭包一样,数据占用内存是不会被垃圾回收掉的,所以再次访问筛选偶数集,不会去再次计算而是返回上次计算的值,当data中的数据改变时才会重新计算。

简而言之,methods是一次性计算没有缓存,computed是有缓存的计算。

例如以下这段代码:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>测试</title>
    </head>
    <body>
        <div id="app">
            <li v-for="v in stus">
                {{v.name}} - {{v.sex}}
            </li>
            <br>
            {{type}}
            <input type="radio" v-model="type" value="girl"> 女孩子
            <input type="radio" v-model="type" value="boy">男孩子
        </div>
    </body>
    <script src="https://cdn.jsdelivr.net/npm/vue"></script>
    <script>
        var app = new Vue({
            el: '#app',
            // 用methods属性不行,必须用computed算数属性,返回一个数组
            // computed属性检测到数据变化自动触发函数
            computed:{
                // ES6的写法
                stus(){
                    if(this.type=='all'){return this.user;}
                    else{
                        // filter方法为过滤,只选择符合条件的内容
                        return this.user.filter((v)=>{
                            return v.sex==this.type;
                        });
                    }
                }
            },
            data:{
                type:'all',
                user:[
                    {name:'小明',sex:'boy'},
                    {name:'小9',sex:'girl'},
                    {name:'小4',sex:'boy'},
                    {name:'小gdr',sex:'girl'},
                    {name:'小w',sex:'girl'}
                ]
            }
        });
    </script>
</html>
实现的功能是选择radio的时候显示男孩还是女孩。结果图片如下


在这个例子当中就应该选择computed属性而不是methods属性,用computed自动检测到数据变化去触发,而methods需要人为的去调用触发,用在这里不合适

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值