04-vue的计算属性复杂操作computed

1.vue的计算属性复杂操作

  • computed用来做复杂的运算,因为computed计算属性会进行缓存,计算属性只会调用一次
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>$Title$</title>
</head>
<body>
<div id="app">
  <h1>总价格:{{totalPrices}}</h1>
</div>

<script src="../js/vue.js"></script>
<script>
  const app=new Vue ({
    el: '#app',
    data: {
      message: "张三爱李白",
      movies:[
        {id: 1001, moviesName: '海贼王', Price: 98},
        {id: 1002, moviesName: '七龙珠', Price: 73},
        {id: 1003, moviesName: '犬夜叉', Price: 82}
      ]
    },
    computed:{
      totalPrices: function () {
        var then = this
        let result = 0
        for (let i = 0;then.movies.length; i++) {
          result = then.movies[i].Price
        }
        return result
      }
    }
  })
</script>

</body>
</html>

2.Vue动态属性的setter和getter

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
</head>
<body>
  <div id="app">
    {{shouName}}
    {{fullName}}
  </div>

  <script src="../js/vue.js"></script>
  <script>
    const app = new Vue ({
      el:'#app',
      data:{
        firtName:'李白',
        lastName:'苏轼'
      },
      computed:{
        shouName:function (){
          return this. firtName+' '+this.lastName
        },
        fullName:{
          set:function (newValue) {
            const names = newValue.split(' ')
            this. firtName=names[0]
            this.lastName=names[1]
            console.log(this. firtName+' '+this.lastName)
          },
          get:function () {
            return this. firtName+' '+this.lastName
          }
        }
      }
    })
  </script>
</body>
</html>

在这里插入图片描述

3.computed的优势

  • 通过定义methods方法展示数据时,多次调用会出现重复调用调用;牺牲了性能
  • 通过定义computed定义的计算属性多次调用时,展示数据的时候不会多次调用了;这是因为vue给computed设计了缓存
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
</head>
<body>
  <div id="app">
    <!--1.直接拼接:语法过于繁琐,后期不好维护-->
    <h2>{{firtName}} {{lastName}}</h2>
    <!--2.通过定义methods方法-->
    <h2>{{fullName}}</h2>
    <h2>{{fullName}}</h2>
    <h2>{{fullName}}</h2>
    <h2>{{fullName}}</h2>
    <!--通过定义computed计算属性-->
    <h2>{{getfullName()}}</h2>
    <h2>{{getfullName()}}</h2>
    <h2>{{getfullName()}}</h2>
    <h2>{{getfullName()}}</h2>
  </div>

  <script src="../js/vue.js"></script>
  <script>
    const app = new Vue ({
      el:'#app',
      data:{
        firtName:'李白',
        lastName:'苏轼'
      },
      computed:{
        fullName: function (){
          console.log('fullName')
          return this. firtName+' '+this.lastName
        }
      },
      methods:{
        getfullName: function () {
          console.log('getfullName')
          return this. firtName+' '+this.lastName
        }
      }
    })
  </script>
</body>
</html>

在这里插入图片描述

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值