美文网首页Vue
Vue的计算属性

Vue的计算属性

作者: 西瓜鱼仔 | 来源:发表于2020-01-14 14:09 被阅读0次

背景

有时候我们可能需要在{{}}里进行一些计算再展示出来数据:

<div>
    <table>
        <thead>
            <th>学科</th>
            <th>分数</th>
        </thead>
        <tbody>
            <tr>
                <td>数学</td>
                <td><input type="text" v-model="Math"></td>
            </tr>
            <tr>
                <td>英语</td>
                <td><input type="text" v-model="English"></td>
            </tr>
            <tr>
                <td>化学</td>
                <td><input type="text" v-model="chemistry"></td>
            </tr>
            <tr>
                <td>总分</td>
                <td>{{Math + English + chemistry}}</td>
            </tr>
            <tr>
                <td>平均分</td>
                <td>{{(Math + English + chemistry)/3}}</td>
            </tr>
        </tbody>
    </table>
</div>
var app = new Vue({
    el:'.app',
    data:{
        Math:88,
        English:77,
        chemistry:99,
    }
});

虽然能解决问题,但是代码显得比较混乱。计算的数据少还好,一旦多的话会使代码的可读性和维护性变得非常差。
这种情况下,Vue给我们提供了一个特别好的解决方案:计算属性

计算属性

我们可以把这些计算的过程写到一个计算属性中去,然后让它动态的计算就可以了。
计算属性是Vue 实例中的选项:computed
通常里面每一个都是计算相关函数,返回最后计算出来的值。

<div>
    <table>
        <thead>
            <th>学科</th>
            <th>成绩</th>
        </thead>
        <tbody>
            <tr>
                <td>数学</td>
                <td><input type="text" v-model.number="Math"></td>
            </tr>
            <tr>
                <td>英语</td>
                <td><input type="text" v-model.number="English"></td>
            </tr>
            <tr>
                <td>化学</td>
                <td><input type="text" v-model.number="chemistry"></td>
            </tr>
            <tr>
                <td>总分</td>
                <td>{{sum}}</td>
            </tr>
            <tr>
                <td>平均分</td>
                <td>{{average}}</td>
            </tr>
        </tbody>
    </table>
</div>
var vm = new Vue({
    el:'.app',
    data:{
        Math:88,
        English: 77,
        chemistry:99,
    },
    computed:{
        sum:function() {
            return this.Math+ this.English+this.chemistry;
        },
        average:function() {
            return Math.round(this.sum/3);
        }
    }
});

优点

计算属性一般是通过其他数据计算出一个新数据,它会把新的数据缓存下来,当其他的数据没有发生改变,它调用的是缓存的数据,这就极大的提高了我们程序的性能。

如果写在methods里的话,每次都会重新计算,耗费性能,所以这种情况用计算属性比较好。


原文地址:https://www.jianshu.com/p/350c8af3ac28

相关文章

网友评论

    本文标题:Vue的计算属性

    本文链接:https://www.haomeiwen.com/subject/irfaactx.html