Vue学习之 --- 计算属性

计算属性

计算属性指的是通过一系列运算之后,最终得到一个属性值,这个动态计算出来的属性值可以用被模板结构或methods方法使用。

当代码中多次用到某一个属性(不管是字符串还是number类型的值) 就如下代码:

<script src="../lib/vue.js"></script>
<style>
    .box{
        width: 200px;
        height: 200px;
        border: 1px solid #ccc;
    }
</style>
<body>
   <div id="app">
       <div>
        <span> Red 的值:</span>
        <input type="text" v-model.number="Red">
       </div>

       <div>
        <span> Green的值:</span>
        <input type="text" v-model.number="green">
       </div>
   
       <div>
        <span> Blue 的值:</span>
        <input type="text" v-model.number="blue">
       </div>
       <hr>
       <!-- 以下 拼接字符串`rgb(${Red}, ${green}, ${blue})` 中的 `  不能写作单引号形式 'rgb(${Red}, ${green}, ${blue})'-->
       <div class="box" :style=" { backgroundColor:`rgb(${Red}, ${green}, ${blue})`}">
        {{ `rgb(${Red}, ${green}, ${blue})` }}
       </div>
       <button @click="show"> 记录 </button>
   </div>
   <script>
         var Vm = new Vue({
               el:"#app",
               data:{
                Red:0,
                green:0,
                blue:0
               },
               methods:{
                show() {
                    console.log(`rgb(${this.Red}, ${this.green}, ${this.blue})`)
                 }
               }
            }
         )
  </script>

上面代码中有3出用到:rgb(${Red}, ${green}, ${blue}),这样就造成代码冗余。如果要修改某一个字符则要修改多处实在不是最优的方式。 so Vue中就专门为此搞了一个节点叫做 计算属性节点 — computed,优点:实现了代码复用,只要计算属性中依赖的数据源变化了,则计算属性会自动更新 !

该节点特点:

  1. 定义的时候,要当做方法即函数形式
  2. 使用的时候,要当做普通属性使用就行

则上述代码优化后如下:

<script src="../lib/vue.js"></script>
<style>
    .box{
        width: 200px;
        height: 200px;
        border: 1px solid #ccc;
    }
</style>
<body>
   <div id="app">
       <div>
        <span> Red 的值:</span>
        <input type="text" v-model.number="Red">
       </div>

       <div>
        <span> Green的值:</span>
        <input type="text" v-model.number="green">
       </div>
   
       <div>
        <span> Blue 的值:</span>
        <input type="text" v-model.number="blue">
       </div>
       
       <div class="box" :style=" { backgroundColor:rgb}">{{ rgb }} </div>
       <button @click="show"> 记录 </button>
   </div>
   <script>
         var Vm = new Vue({
               el:"#app",
               data:{
                Red:0,
                green:0,
                blue:0
               },
               methods:{
                   show() {
                    console.log(this.rgb)//直接当做成属性字符串使用就行
                  }
               },
               // 所有的计算属性,都要定义到computed的节点下
               computed:{
                    // 计算属性在定义的时候,要定义成 方法格式即函数
                    rgb(){
                        return `rgb(${this.Red}, ${this.green}, ${this.blue})`
                    }
               }
            }
         )
   </script>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

吾心流云

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值