zoukankan      html  css  js  c++  java
  • Vue 计算属性 computed

    Vue 计算属性 computed

    • 模板中放入太多的逻辑会让模板过重且难以维护 使用计算属性可以让模板更加的简洁

    • 计算属性是基于它们的响应式依赖进行缓存的

    • computed比较适合对多个变量或者对象进行处理后返回一个结果值,也就是数多个变量中的某一个值发生了变化则我们监控的这个值也就会发生变化

    在插值表达式中使用js表达式是非常方便的,而且也经常被用到。

    但是如果表达式的内容很长,就会显得不够优雅,而且后期维护起来也不方便,例如下面的场景,我们有一个日期的数据,但是是毫秒值:

    data:{
        birthday:1529032123201 // 毫秒值
    }

    我们在页面渲染,希望得到yyyy-MM-dd的样式:

    <h1>您的生日是:{{
        new Date(birthday).getFullYear() + '-'+ new Date(birthday).getMonth()+ '-' + new Date(birthday).getDay()
        }}
    </h1>

    虽然能得到结果,但是非常麻烦。

    Vue中提供了计算属性,来替代复杂的表达式:

    var vm = new Vue({
        el:"#app",
        data:{
            birthday:1429032123201 // 毫秒值
        },
        computed:{
            birth(){// 计算属性本质是一个方法,但是必须返回结果
                const d = new Date(this.birthday);
                return d.getFullYear() + "-" + d.getMonth() + "-" + d.getDay();
            }
        }
    })

    计算属性本质就是方法,但是一定要返回数据。然后页面渲染时,可以把这个方法当成一个变量来使用。

    页面使用:

     <div id="app">
           <h1>您的生日是:{{birth}} </h1>
        </div>

    我们可以将同一函数定义为一个方法而不是一个计算属性。两种方式的最终结果确实是完全相同的。然而,不同的是计算属性是基于它们的依赖进行缓存的。计算属性只有在它的相关依赖发生改变时才会重新求值。这就意味着只要birthday还没有发生改变,多次访问 birthday 计算属性会立即返回之前的计算结果,而不必再次执行函数。

  • 相关阅读:
    ASP.NET中自定义控件无法响应事件的问题
    通过编程为ASP.NET页面设置缓存
    VB.NET中Module的概念
    IDENTITY列及其编号的问题
    使用XML RPC进行远程调用
    存储过程编写和优化的经验
    为控件添加设计期支持
    SSIS的一个问题
    多线程编程中的锁定(lock,Monitor)
    汉字的奥秘: 获取汉字的笔画数
  • 原文地址:https://www.cnblogs.com/konglxblog/p/15208352.html
Copyright © 2011-2022 走看看