美文网首页
vue开发:computed 计算属性

vue开发:computed 计算属性

作者: 家乡的蝈蝈 | 来源:发表于2024-03-21 15:53 被阅读0次

1.1 计算属性

1.概念

基于现有的数据,计算出来的新属性依赖的数据变化,自动重新计算。

2.语法

  1. 声明在 computed 配置项中,一个计算属性对应一个函数
  2. 使用起来和普通属性一样使用 {{ 计算属性名}}
computed: { //计算属性简单写法
     计算属性名 () {
        一段代码逻辑(计算逻辑)
     return 结果
   }
}

3.注意

  1. computed配置项和data配置项是同级
  2. computed中的计算属性虽然是函数的写法,但他依然是个属性
  3. computed中的计算属性不能和data中的属性同名
  4. 使用computed中的计算属性和使用data中的属性是一样的用法
  5. computed中计算属性内部的this依然指向的是Vue实例
   <!-- 模板中,使用计算属性,不能加小括号 -->
    <p>礼物总数:{{ total }} 个</p>
<script>
    const app = new Vue({
      el: '#app',
      data: {
        // 现有的数据
        list: [
          { id: 1, name: '篮球', num: 3 },
          { id: 2, name: '玩具', num: 2 },
          { id: 3, name: '铅笔', num: 5 },
        ]
      },
      computed: {
        total() {
          // 基于现有数据,编写求值逻辑
          // 必须return 返回结果
          let x = 0
          this.list.forEach(item => {
            x += item.num
          })
          return x
          // return this.list.reduce((total, curr) => total +curr.num, 0)
        }
      }
    })
  </script>

1.2 computed计算属性 VS methods方法

1.computed计算属性
作用:封装了一段对于数据的处理,求得一个结果
语法:

  1. 写在computed配置项中
  2. 作为属性,直接使用
    • js中使用计算属性: this.计算属性
    • 模板中使用计算属性:{{计算属性}}

2.methods计算属性
作用:给Vue实例提供一个方法,调用以处理业务逻辑
语法:

  1. 写在methods配置项中
  2. 作为方法调用
    • js中调用:this.方法名()
    • 模板中调用 {{方法名()}} 或者 @事件名=“方法名”

3.计算属性的优势

  1. 缓存特性(提升性能)
    计算属性会对计算出来的结果缓存,再次使用直接读取缓存,
    依赖项变化了,会自动重新计算 → 并再次缓存
  2. methods没有缓存特性
  3. 通过代码比较

4.总结
1.computed有缓存特性,methods没有缓存
2.当一个结果依赖其他多个值时,推荐使用计算属性
3.当处理业务逻辑时,推荐使用methods方法,比如事件的处理函数

1.3 计算属性的完整写法

  1. 计算属性默认的简写,只能读取访问,不能 "修改"
  2. 如果要 "修改" → 需要写计算属性的完整写法
computed: { // 计算属性复杂写法
  计算属性名: {
    get() {
      一段代码逻辑(计算逻辑)
      return 结果
    },
    set(修改的值) {
      一段代码逻辑(修改逻辑)
    }
  }
}
<div id="app">
    <span>姓:</span><input type="text" v-model="xing"><br><br>
    <span>名:</span><input type="text" v-model="ming"><br><br>
    <span>姓名:</span><input type="text" v-model.lazy="fullName"><br />
  </div>
<script>
    const app = new Vue({
      el: '#app',
      data: {
        xing: '代发费',
        ming: '本王'
      },
      computed: {
        fullName: {
          get() {
            // 当计算结果的时候,get就会执行
            return this.xing + '·' + this.ming
          },
          set(val) {
            // 直接修改计算属性的结果时,set就会执行。并且形参表示修改后的结果
            // console.log(val) // 修改后的计算属性
            let arr = val.split('·')
            this.xing = arr[0]
            this.ming = arr[1]
          }
        },
        // 计算属性2: {
        //   get () {
        //   },
        //   set () {
        //   }
        // }
      }
    })
  </script>

相关文章

  • Vue计算属性简析

    Vue Computed Vue开发人员必然使用过计算属性(Computed Properties):你可以像绑定...

  • Vue复习

    Vue的计算属性 计算属性computed

  • 2020-07-28

    了解Vue计算属性的实现原理 computed的作用 在vue的开发中,我们不免会使用到计算属性,使用计算属性,v...

  • Vue之计算属性computed(一)

    Vue中什么是计算属性computed,计算属性的基础、计算属性computed与方法method实现相同的功能为...

  • 2019-02-23

    vue 核心之一 计算属性computed 和侦听属性watch 对于很多初学vue的初级前端开发工程而言,在了解...

  • 3.vue计算属性和过滤器

    1.计算属性 Vue中的computed属性称为计算属性.它与methods不同,computed是响应式的,调用...

  • Vue2视频教程系列第十一节-计算属性

    今天主要讲一下vue的computed这个计算属性的用法 computed属性是实时响应的,当项目开发中依赖某个或...

  • vue中计算属性computed方法内传参

    原文:vue中计算属性computed方法内传参 vue中computed计算属性无法直接进行传参 如果有传参数的...

  • 记录一些前端遇到的问题

    一、Vue props 使用 二、Vue 计算属性 computed 的使用

  • computed和methods的区别

    computed computed属性是vue的计算属性,是数据层到视图层的数据转化反映;计算属性是基于他们的依赖...

网友评论

      本文标题:vue开发:computed 计算属性

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