我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Vue3 计算属性的用法详解

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Vue3 计算属性的用法详解

上一篇博文说了 vue3 项目的 toRefs 函数和 toRef 函数,今天就稍微总结一下 vue3 的计算属性,其实学过 vue2 的宝子们应该都清楚,计算属性这个东西在项目开发过程中使用的还是比较频繁的,使用频率相对来说比较高,所以说咱今天稍微总结一下 vue3 项目中的计算属性,下面开始。

computed 计算属性说明

computed 表示计算属性,通常的作用是用来进行数据处理,方便在末班中简化书写。

比如日常在模板中我们渲染数据的时候一般是使用 {{ }} 来进行展示数据,但是有的时候嘞,获取到的数据并不是我们想要的类型,我们可以在 {{ }} 中编写表达式转换成我们需要的类型,但是呢,这样做简单的还可以,如果相对复杂的格式在 {{ }} 中编写的话就会造成模板代码繁琐,不易维护和阅读,所以这并不是最好的编码习惯,因此,vue3 也为我们提供了一些好的解决方案,计算属性就是其中一种。

计算属性可以帮我们将数据转换成需要展示的数据格式,不必在模板中编写大量的表达式进行处理。

计算属性使用

首先呢,使用 computed 需要引入。

import { computed } from 'vue'

引入这一个步骤是不可或缺的。

然后我们编写一个案例,就是一个页面有两个输入框,第一个输入框的数 加上 第二个输入框的数,使用计算属性在第三个输入框求和。

<template>
  <div>
    <h1>computed 计算属性</h1>
    <el-input v-model="num1" /> +
    <el-input v-model="num2" /> =
    <el-input v-model="num3" />
  </div>
</template>
<script>
  import { computed, ref } from 'vue'
  export default {
    setup() {
      const num1 = ref('')
      const num2 = ref('')
      const num3 = computed(() => {
        return Number(num1.value) + Number(num2.value)
      })
      return { num1, num2, num3 }
    }
  }
</script>
<style scoped>
  .el-input {
    width: 100px;
  }
</style>

保存刷新,输如前两个输入框的值,会自动计算和展示在第三个输入框。

这样就实现了最简单的计算属性。

计算属性不是只可以写一个的,可以写任意多个计算属性,怎么操作呢?看代码:

<template>
  <div>
    <h1>computed 计算属性</h1>
    <el-input v-model="num1" /> +
    <el-input v-model="num2" /> =
    <el-input v-model="num3" />
    <hr>
    <el-input v-model="num1" /> -
    <el-input v-model="num2" /> =
    <el-input v-model="num4" />
  </div>
</template>
<script>
  import { computed, reactive, toRefs } from 'vue'
  export default {
    setup() {
      const num1 = ''
      const num2 = ''
      const all = reactive({ num1, num2 })

      // 计算属性求和
      const num3 = computed(() => {
        return Number(all.num1) + Number(all.num2)
      })

      // 计算属性求差
      const num4 = computed(() => {
        return Number(all.num1) - Number(all.num2)
      })
      return { ...toRefs(all), num3, num4 }
    }
  }
</script>
<style scoped>
  .el-input {
    width: 100px;
  }
</style>

保存刷新,我们看到除了求和,还可以求差。

这样的话,就实现了在一个页面实现多个计算属性的操作,完全不用写在一个计算属性里面进行判断处理,很灵活,当然了,有三个可以写三个,有四个可以写四个。

但是有一点需要注意!

如果我们直接修改计算属性的值会报一个错误!

比如我们有一个按钮,点击之后把 num4 修改为 10 。

      function btn() {
        console.log(num4)
        num4.value = 10
      }

我们可以看一下效果。

没错,他会有一个错误,这个意思都懂,就是计算属性是只读的不允许修改。

为什么呢?

总结: 如果传递给 computed 的是一个函数,那么这就是一个 getter 函数,我们只能获取它的值,而不能直接修改它。

那我需要修改计算属性的值,我们需要怎么操作呢?其实很简单,只需要传进去一个对象。

	  // 计算属性求和
      const num3 = computed({
        get: () => {
          return Number(all.num1) + Number(all.num2)
        },
        set:(value) => {
          console.log(value)
          return all.num2 = Number(value) + 1
        }
      })

也就是说,计算属性传入一个对象, 包含get 和 set 函数, 就能实现创建一个可以修改的计算属性。

案例:

<template>
  <div>
    <h1>computed 计算属性</h1>
    <el-input v-model="num1" /> +
    <el-input v-model="num2" /> =
    <el-input v-model="num3" />
    <br>
    <br>
    <el-button type="primary" @click="btn">修改计算属性</el-button>
  </div>
</template>
<script>
  import { computed, reactive, toRefs } from 'vue'
  export default {
    setup() {
      const num1 = ''
      const num2 = ''
      const all = reactive({ num1, num2 })

      // 计算属性求和
      const num3 = computed({
        get: () => {
          return Number(all.num1) + Number(all.num2)
        },
        set:(value) => {
          console.log(value)
          return all.num2 = Number(value) + 1
        }
      })

      function btn() {
        num3.value = '10'
      }

      return { ...toRefs(all), num3, btn }
    }
  }
</script>
<style scoped>
  .el-input {
    width: 100px;
  }
</style>

点击按钮,把 num2 改成输入的数字 + 1,也就是11。

好的,这就实现了修改计算属性。

总结

  • vue.3.0 中用于从vue 按需导入 computed 计算属性。
  • 如果传入的是一个getter 函数, 会返回一个不允许修改的计算属性。
  • 使用ref 创建一个响应式对象, 在模板中使用不用自动解套。 直接渲染使用。
  • 传入一个对象, 包含get 和 set 函数, 就可以创建一个可以修改的计算属性。
  • 只可以获取值,不允许修改值直接使用 computed 计算属性使用箭头函数。
  • 既可以获取值, 也可以修改值, computed 计算属性中传入一个对象。 get 方法 和 set 方法。

注意

在 vue2 中,有一个叫做过滤器的家伙,从 vue3 开始,过滤器已经被移除,且不再进行支持。官方给的建议是用方法调用或计算属性来替换它们。

到此这篇关于Vue3 计算属性的用法详解的文章就介绍到这了,更多相关Vue3 计算属性内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Vue3 计算属性的用法详解

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

详解Vue3 中的计算属性及侦听器

这篇文章主要介绍了详解Vue3 中的计算属性及侦听器,文章围绕主题的相关资料展开详细的内容介绍,具有一定的参考价值,需要的朋友可以看下一下
2022-11-13

Vue3 计算属性computed的实现原理

这篇文章主要介绍了Vue3 计算属性computed的实现原理,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的朋友可以参考一下
2022-11-13

Vue3计算属性是怎么实现的

今天小编给大家分享一下Vue3计算属性是怎么实现的的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。计算属性是 Vue.js 开
2023-06-30

关于Vue中的计算属性和监听属性详解

这篇文章主要介绍了关于Vue中的计算属性和监听属性详解,Vue.js模板内的表达式非常便利,但是设计它们的初衷是用于简单运算的,在模板内放入过长的或复杂的逻辑时,会让模板过重且难以维护,需要的朋友可以参考下
2023-05-20

详解Vuecomputed计算属性是什么

在vue中,有时候你需要对data中的数据进行处理,或者对抓取的数据进行处理之后再挂载呈现到标签中,这时候你就需要计算属性了,当然看到这里你可能还是不了解那下面我举几个实例并附代码解释
2023-03-09

Vue3中的计算属性及侦听器怎么使用

计算属性我们知道,在模板中可以直接通过插值语法显示一些data中的数据,但是在某些情况,我们可能需要对数据进行一些转化后再显示,或者需要将多个数据结合起来进行显示在模板中使用表达式,可以非常方便的实现,但是设计它们的初衷是用于简单的运算,在模板中放入太多的逻辑会让模板过重和难以维护,并且如果多个地方都使用到,那么会有大量重复的代码所以我们希望将业务逻辑和UI界面进行分离,其中一种方式就是将逻辑抽取到一个method中,但这种做法有以下弊端所有的data使用过程都会变成了一个方法的调用多次获取数据
2023-05-14

Vue3中的计算属性及侦听器如何使用

这篇文章主要介绍“Vue3中的计算属性及侦听器如何使用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Vue3中的计算属性及侦听器如何使用”文章能帮助大家解决问题。计算属性我们知道,在模板中可以直接通
2023-07-06

VUE计算属性进阶指南:探索计算属性的更多高级用法

在Vue.js中,计算属性是一个极其强大的工具,它可以让开发者轻松获取基于其他响应式属性的衍生数据,从而避免了复杂的表达式及其维护工作。本文将带您深入探索计算属性的更高级用法,通过演示代码示例帮助您掌握计算属性的精髓。
VUE计算属性进阶指南:探索计算属性的更多高级用法
2024-02-27

Vue计算属性与监视属性详细分析使用

computed是vue的配置选项,它的值是一个对象,其中可定义多个计算属性,每个计算属性就是一个函数,下面这篇文章主要给大家介绍了关于vue中计算属性computed的详细讲解,需要的朋友可以参考下
2022-11-13

vue怎么调用计算属性方法

在Vue中,计算属性是一种特殊的属性,它可以根据已有属性的值计算出新的属性值。在开发中,我们通常会将一些需要计算的属性定义为计算属性,以便在模板中直接使用,避免了在JS代码中频繁地进行逻辑计算。但是,有时候我们在Vue组件中需要调用计算属性的方法(不是取它的值),这该如何实现呢?在本文中,我们会介绍几种方法来实现这种需求。## 直接调用计算属性Vue组件中的计算属性可以像普通的
2023-05-14

vue计算属性computed--getter和setter用法

这篇文章主要介绍了vue计算属性computed--getter和setter用法,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
2023-01-28

编程热搜

目录