0

0

VUE3基础教程:使用Vue.js响应式框架之computed

PHPz

PHPz

发布时间:2023-06-15 22:19:35

|

2304人浏览过

|

来源于php中文网

原创

vue.js是一款开源的javascript框架,它采用mvvm(model-view-viewmodel)模式,旨在提供简单、灵活的方式来构建用户界面。其中,响应式框架是vue.js最重要的特性之一,它允许开发者对数据进行双向的绑定和响应式更新。在vue.js中,computed就是其中的一个重要概念。本文将介绍computed的基础用法和示例。

一. 什么是computed?

computed是Vue.js中的一个属性,它可以实现动态计算属性的功能。也就是说,computed可以根据所依赖的数据动态计算出一个新值,并且该计算属性在所依赖的数据发生变化时会自动更新。与methods不同,computed是一个计算属性而非方法。

二. computed的基础使用

computed属性可以使用以下方式进行定义:

立即学习前端免费学习笔记(深入)”;

new Vue({
  // ...
  computed: {
    // 计算属性的 getter
    reversedMessage: function () {
      // `this` 指向 vm 实例
      return this.message.split('').reverse().join('')
    }
  }
})

在上述代码中,我们定义了一个reversedMessage的计算属性,它是基于message属性的计算结果。

接下来,我们将在HTML模板中使用computed属性。为了取得计算属性的值,我们不再直接绑定message,而是使用computed属性,如下所示:

Original message: "{{ message }}"

Computed reversed message: "{{ reversedMessage }}"

在模板中,我们可以使用差值表达式{{ }}来显示计算属性的值。由于我们已经将reversedMessage作为计算属性进行了定义,因此Vue.js会自动进行计算并更新视图。

三. computed的缓存机制

在计算属性依赖的数据发生变化时,computed会自动重新计算并更新视图。但是,当计算属性所依赖的数据没有发生变化时,computed会记住上一次计算的结果,并直接返回上一次的值。这种缓存机制可以提高应用的性能和效率。

举个例子,如下代码中,我们定义了一个computed属性fullName:

new Vue({
  // ...
  data: {
    firstName: 'Peter',
    lastName: 'Parker'
  },
  computed: {
    fullName: function () {
      console.log('computed')
      return this.firstName + ' ' + this.lastName
    }
  }
})

当我们第一次访问fullName时,控制台会输出一条“computed”的消息。但是,当我们修改firstName或lastName属性的值时,computed不会每次都重新计算,而是直接返回上一次计算的结果。

Figma
Figma

Figma 是一款基于云端的 UI 设计工具,可以在线进行产品原型、设计、评审、交付等工作。

下载

四. computed与methods的区别

computed和methods都可以用来实现动态计算属性的功能,它们的主要区别在于计算属性的缓存机制。

在例子中,我们定义了一个计算属性fullName和一个方法getFullName:

new Vue({
  // ...
  data: {
    firstName: 'Peter',
    lastName: 'Parker'
  },
  computed: {
    fullName: function () {
      console.log('computed')
      return this.firstName + ' ' + this.lastName
    }
  },
  methods: {
    getFullName: function () {
      console.log('method')
      return this.firstName + ' ' + this.lastName
    }
  }
})

在模板中,我们可以通过以下方式来调用fullName和getFullName:

Computed fullName: "{{ fullName }}"

Method fullName: "{{ getFullName() }}"

我们发现,在调用getFullName方法时,每次都会重新计算,而不会使用缓存结果。因此,如果我们需要频繁地调用某个方法,那么使用computed属性可以提高应用的性能和效率。

五. computed的示例

以下是一个计算购物车总价的示例,我们假设购物车的数据结构如下:

new Vue({
  // ...
  data: {
    items: [
      { name: 'iPhone', price: 6999, count: 1 },
      { name: 'iPad', price: 3888, count: 2 },
      { name: 'MacBook', price: 9888, count: 1 }
    ]
  },
  computed: {
    totalPrice: function () {
      var result = 0
      for (var i = 0; i < this.items.length; i++) {
        result += this.items[i].price * this.items[i].count
      }
      return result
    }
  }
})

在模板中,我们可以使用computed属性来显示购物车的总价:

商品 单价 数量 小计
{{ item.name }} {{ item.price }} {{ item.count }} {{ item.price * item.count }}
总价: {{ totalPrice }}

在上述示例中,我们定义了一个计算属性totalPrice,该属性依赖于items数组中所有商品的价格和数量。每当数组中任意一个商品的价格或数量发生变化时,Vue.js会重新计算总价,并自动更新视图。

六. 总结

在Vue.js中,computed是一个非常强大和重要的特性,它是实现动态计算属性的关键。计算属性的缓存机制可以提高应用的性能和效率。与methods不同,computed是一个计算属性而非方法。通过学习和使用computed,我们可以更加方便和高效地构建优秀的Vue.js应用程序。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
vue.js为什么报错
vue.js为什么报错

vue.js报错的原因:1、语法错误;2、组件使用不当;3、数据绑定问题;4、生命周期钩子使用不当;5、插件或依赖问题;6、路由配置错误;7、异步操作处理不当等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

120

2024.03.11

vue.js插槽有哪些用
vue.js插槽有哪些用

vue.js插槽的作用:1、提高组件的可重用性;2、实现组件的灵活布局;3、实现组件间的数据传递和交互;4、促进组件的解耦和模块化。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

176

2024.03.11

vue.js怎么带参数跳转
vue.js怎么带参数跳转

vue.js带参数跳转的方法:1、定义路由;2、在组件中使用路由参数;3、进行带参数的跳转。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

92

2024.03.11

treenode的用法
treenode的用法

​在计算机编程领域,TreeNode是一种常见的数据结构,通常用于构建树形结构。在不同的编程语言中,TreeNode可能有不同的实现方式和用法,通常用于表示树的节点信息。更多关于treenode相关问题详情请看本专题下面的文章。php中文网欢迎大家前来学习。

538

2023.12.01

C++ 高效算法与数据结构
C++ 高效算法与数据结构

本专题讲解 C++ 中常用算法与数据结构的实现与优化,涵盖排序算法(快速排序、归并排序)、查找算法、图算法、动态规划、贪心算法等,并结合实际案例分析如何选择最优算法来提高程序效率。通过深入理解数据结构(链表、树、堆、哈希表等),帮助开发者提升 在复杂应用中的算法设计与性能优化能力。

17

2025.12.22

深入理解算法:高效算法与数据结构专题
深入理解算法:高效算法与数据结构专题

本专题专注于算法与数据结构的核心概念,适合想深入理解并提升编程能力的开发者。专题内容包括常见数据结构的实现与应用,如数组、链表、栈、队列、哈希表、树、图等;以及高效的排序算法、搜索算法、动态规划等经典算法。通过详细的讲解与复杂度分析,帮助开发者不仅能熟练运用这些基础知识,还能在实际编程中优化性能,提高代码的执行效率。本专题适合准备面试的开发者,也适合希望提高算法思维的编程爱好者。

25

2026.01.06

js正则表达式
js正则表达式

php中文网为大家提供各种js正则表达式语法大全以及各种js正则表达式使用的方法,还有更多js正则表达式的相关文章、相关下载、相关课程,供大家免费下载体验。

513

2023.06.20

js获取当前时间
js获取当前时间

JS全称JavaScript,是一种具有函数优先的轻量级,解释型或即时编译型的编程语言;它是一种属于网络的高级脚本语言,主要用于Web,常用来为网页添加各式各样的动态功能。js怎么获取当前时间呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

244

2023.07.28

Python 自然语言处理(NLP)基础与实战
Python 自然语言处理(NLP)基础与实战

本专题系统讲解 Python 在自然语言处理(NLP)领域的基础方法与实战应用,涵盖文本预处理(分词、去停用词)、词性标注、命名实体识别、关键词提取、情感分析,以及常用 NLP 库(NLTK、spaCy)的核心用法。通过真实文本案例,帮助学习者掌握 使用 Python 进行文本分析与语言数据处理的完整流程,适用于内容分析、舆情监测与智能文本应用场景。

22

2026.01.27

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Vue 教程
Vue 教程

共42课时 | 7.3万人学习

Vue3.x 工具篇--十天技能课堂
Vue3.x 工具篇--十天技能课堂

共26课时 | 1.5万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号