Vue 基础怎么使用计算属性(Computed)处理数据的格式化与过滤

秋伟酱_7424

秋伟酱_7424

2026-08-30

963人浏览

原创

计算属性是Vue中处理数据格式化、过滤及多状态组合的推荐方式,基于响应式依赖自动追踪、缓存与更新,高效且声明式。

vue 基础怎么使用计算属性(computed)处理数据的格式化与过滤

计算属性是 Vue 中处理数据格式化与过滤最推荐的方式,尤其在 Vue 3(Composition API)和 Vue 2 中都保持高度一致性和实用性。它不是简单地“写个函数”,而是基于响应式依赖自动追踪、缓存结果、按需更新的智能机制。

格式化数据:把原始值转成易读形式

当需要将日期、数字、字符串等做统一转换(如 “2026-08-20T10:30:00” → “2026年08月20日”),计算属性比 methods 更高效,也比过滤器(Vue 3 已移除)更现代、更可控。

  • 直接在 computed 中编写逻辑,返回格式化后的值
  • 依赖的数据(如 rawDate)一变,计算属性立刻重算并更新视图
  • 多次使用同一个计算属性(比如模板里显示两次),不会重复执行函数,结果自动复用

示例(Vue 3 Composition API):

<script setup><br> import { ref, computed } from '<a style="color:#f60; text-decoration:underline;" title= "vue"href="https://m.php.cn/zt/15721.html" target="_blank">vue'<br> const rawDate = ref('2026-08-20T10:30:00')<br> const formattedDate = computed(() => {<br> &nbsp;&nbsp;const d = new Date(rawDate.value)<br> &nbsp;&nbsp;return d.toLocaleDateString('zh-CN', {<br> &nbsp;&nbsp;&nbsp;&nbsp;year: 'numeric',<br> &nbsp;&nbsp;&nbsp;&nbsp;month: '2-digit',<br> &nbsp;&nbsp;&nbsp;&nbsp;day: '2-digit'<br> &nbsp;&nbsp;})<br> })<br> </script>

过滤数据:动态筛选列表内容

搜索、分类、状态筛选等场景,本质是“输入变化 → 列表重过滤 → 视图更新”。计算属性天然适合这类响应式过滤,且逻辑清晰、可测试、易维护。

  • 把原始数组(items)和筛选条件(searchQuery)作为依赖
  • 每次 searchQuery 改变,filteredList 自动重新执行 filter()
  • 避免在 v-for 中写冗长表达式,也不用在 methods 中手动调用

示例:

Springboot Vue Builder
Springboot Vue Builder

从零开始编排 SpringBoot+Vue 全栈项目工作流,适用于新建全栈项目或完整脚手架请求,触发后依次调用 product‑spec‑builder(需求调研)等模块。

下载
const searchQuery = ref('')
const items = ref([{ name: '苹果' }, { name: '香蕉' }, { name: '橙子' }])
const filteredList = computed(() => {
  return items.value.filter(item =>
    item.name.includes(searchQuery.value)
  )
})

组合多个字段或状态做判断

当显示内容依赖多个响应式变量(如用户登录态 + 权限 + 当前页数据),计算属性能自然聚合这些依赖,生成一个语义明确的状态值。

  • 比如 canEdit 同时看 isLoggedIn、userRole、item.status
  • 所有依赖任意一个变化,canEdit 都会重新求值
  • 比 watch 更声明式,比 methods 更轻量

示例:

const isLoggedIn = ref(false)
const userRole = ref('editor')
const item = ref({ status: 'draft' })
const canEdit = computed(() =>
  isLoggedIn.value &&
  (userRole.value === 'admin' || (userRole.value === 'editor' && item.value.status === 'draft'))
)

注意避开常见误区

计算属性不是万能的,用错场景反而增加复杂度:

  • 不用于发起请求(该用 watch 或事件回调)
  • 不用于产生副作用(如修改其他 ref、调用 console.log 仅作调试)
  • 不替代 watch 做异步或开销大的操作(如防抖搜索建议应配合 watch + setTimeout)
  • 避免在计算属性中直接修改响应式数据(会触发无限循环)

前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

vue.js vue

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
python是前端还是后端
python是前端还是后端

Python属于前端也属于后端,其灵活性和丰富的生态系统使得开发人员能够在不同的领域中灵活运用。本专题为大家提供python相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.11

2963

5

前端如何实现即时通讯
前端如何实现即时通讯

实现即时通讯的方法有WebSocket、Long Polling、Server-Sent Events、WebRTC等等。详细介绍:1、WebSocket,它可以在客户端和服务器之间建立持久连接,实现实时的双向通信,前端可以使用 WebSocket API来创建WebSocket连接,并通过发送和接收消息来实现即时通讯;2、Long Polling,是一种模拟实时通信的技术等等。

2023.10.09

6483

6

前端和后端的区别
前端和后端的区别

前端关注的是用户界面的设计和交互,而后端则注重数据处理和逻辑控制。想了解更多前端后端的相关内容,可以阅读本专题下面的文章。

2024.03.19

7350

13

php和前端的关联介绍
php和前端的关联介绍

php既可以作为前端语言,也可以作为后端语言。想了解更多php和前端的相关内容,可以阅读本专题下面的文章。

2024.03.22

7218

10

前端外包工作内容有哪些
前端外包工作内容有哪些

前端外包工作内容包括:1. 网站和应用程序开发;2. 用户界面和交互设计;3. 用户体验优化;4. 设计和视觉开发;5. 跨浏览器兼容性;6. 性能优化;7. 维护和更新;8. 项目管理和沟通。想了解更多前端的相关内容,可以阅读本专题下面的文章。

2024.05.22

1023

5

vue2.0和3.0区别
vue2.0和3.0区别

vue2.0和3.0区别:vue2的响应式原理是利⽤“Object.defineProperty()”对数据进⾏劫持结合发布订阅模式的⽅式来实现,vue3中使⽤了es6的proxy API对数据代理,实现对数据的监控。本专题为大家提供vue2.0和3.0区别的相关的文章、下载、课程内容,供大家免费下载体验。

2023.07.17

1754

5

vue3的生命周期有哪些
vue3的生命周期有哪些

vue3的生命周期:1、beforecreate;2、created;3、beforemount;4、mounted;5、beforeupdate;6、updated;7、beforedestroy;8、destroyed;9、activated;10、deactivated等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.02.23

12602

5

Vue3组合式API与组件开发实战
Vue3组合式API与组件开发实战

本专题讲解 Vue 3 组合式 API 的核心概念与应用技巧,深入分析响应式系统、生命周期管理、组件设计与复用策略。通过完整项目案例,指导前端开发者实现高性能、结构清晰的 Vue 应用,提升开发效率与代码可维护性。

2026.02.10

336

23

热门下载

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

精品课程

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

共42课时 | 17.5万人学习

国外Web开发全栈课程全集
国外Web开发全栈课程全集

共12课时 | 1.4万人学习

Vue.js 微实战--十天技能课堂
Vue.js 微实战--十天技能课堂

共18课时 | 1.7万人学习