【Vue2从入门到精通】Vue监听器watch,计算属性computed,方法methods的区别及使用场景

本文涉及的产品
可观测可视化 Grafana 版,10个用户账号 1个月
Serverless 应用引擎免费试用套餐包,4320000 CU,有效期3个月
注册配置 MSE Nacos/ZooKeeper,118元/月
简介: Vue 监听器 $watch、计算属性 computed 和方法 methods 都是 Vue 中响应式数据变化的方式,但它们在实现和使用上有一些区别。

前言

yyx.jpeg

Vue.js 是一款流行的 JavaScript 框架,它提供了一种响应式的数据绑定机制,使得数据的变化能够自动更新到视图上。

在 Vue.js 中,有三种常用的响应式数据变化的方式,分别是监听器 $watch、计算属性 computed 和方法 methods。本文将分别介绍这三种方式的区别、示例以及适用场景。

Vue 监听器 $watch

定义及作用

Vue 监听器 $watch 是一种用于在数据发生变化时执行自定义逻辑的方法。可以使用 $watch 函数在 Vue 实例中定义一个监听器,用于监视某个数据的变化并在变化时执行相应的代码。

示例

下面是一个使用 $watch 函数来监听 msg 变量的示例:

new Vue({
   
   
  data: {
   
   
    msg: 'hello world'
  },
  watch: {
   
   
    msg: function(newValue, oldValue) {
   
   
      console.log(`msg 从 ${oldValue} 变成了 ${newValue}`)
    }
  }
})

使用场景

  • 监听数据变化并在变化时执行特定操作;
  • 需要手动控制监听器的添加和移除;
  • 数据变化后需要执行异步操作。

Vue 计算属性 computed

定义及作用

Vue 计算属性 computed 是一种用于在模板中动态计算数据的方法。计算属性会根据依赖的数据进行缓存,只有当依赖的数据发生变化时才会重新计算。

示例

下面是一个计算属性 fullName 的示例,它会根据 firstName 和 lastName 计算出完整的姓名:

new Vue({
   
   
  data: {
   
   
    firstName: 'John',
    lastName: 'Doe'
  },
  computed: {
   
   
    fullName: function() {
   
   
      return `${this.firstName} ${this.lastName}`
    }
  }
})

在模板中使用计算属性 fullName:

<p>{
  
  { fullName }}</p>

使用场景

需要根据多个数据计算出一个新值;
需要在模板中动态计算数据;
需要对计算结果进行缓存。

Vue 方法 methods

定义及作用

Vue 方法 methods 是一种在 Vue 实例中定义方法的方式,可以在模板中使用事件来调用方法。

示例

下面是一个在 methods 中定义的 greet 方法的示例:

new Vue({
   
   
  data: {
   
   
    name: 'John'
  },
  methods: {
   
   
    greet: function() {
   
   
      alert(`Hello, ${
     
     this.name}!`)
    }
  }
})

在模板中使用 greet 方法:

<button @click="greet">Say Hello</button>

使用场景

  • 处理用户事件(如点击事件、输入事件等);
  • 在模板中执行一些逻辑;
  • 需要接受参数并返回结果。

总结

综上所述,Vue 监听器 $watch、计算属性 computed 和方法 methods 都有自己的适用场景,可以根据具体需求进行选择和使用。


✍创作不易,求关注😄,点赞👍,收藏⭐️

相关文章
|
2月前
|
JavaScript 前端开发 API
管理数据必备;侦听器watch用法详解,vue2与vue3中watch的变化与差异
一篇文章同时搞定Vue2和Vue3的侦听器,是不是很棒?不要忘了Vue3中多了一个可选项watchEffect噢。 博客不应该只有代码和解决方案,重点应该在于给出解决方案的同时分享思维模式,只有思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
|
6月前
|
存储 缓存 JavaScript
在 Vue 中使用 computed 和 watch 时,性能问题探讨
本文探讨了在 Vue.js 中使用 computed 计算属性和 watch 监听器时可能遇到的性能问题,并提供了优化建议,帮助开发者提高应用性能。
|
6月前
|
存储 缓存 JavaScript
如何在大型 Vue 应用中有效地管理计算属性和侦听器
在大型 Vue 应用中,合理管理计算属性和侦听器是优化性能和维护性的关键。本文介绍了如何通过模块化、状态管理和避免冗余计算等方法,有效提升应用的响应性和可维护性。
|
6月前
|
存储 缓存 JavaScript
Vue 中 computed 和 watch 的差异
Vue 中的 `computed` 和 `watch` 都用于处理数据变化,但使用场景不同。`computed` 用于计算属性,依赖于其他数据自动更新;`watch` 用于监听数据变化,执行异步或复杂操作。
|
7月前
|
存储 JavaScript 前端开发
前端开发:Vue.js入门与实战
【10月更文挑战第9天】前端开发:Vue.js入门与实战
|
7月前
|
JavaScript 前端开发 开发者
VUE学习一:初识VUE、指令、动态绑定、计算属性
这篇文章主要介绍了Vue.js的基础知识,包括初识Vue、指令如v-for、v-on的使用、动态属性绑定(v-bind)、计算属性等概念与实践示例。
98 1
|
7月前
|
JavaScript 前端开发 C#
从入门到放弃,我们为何从 Blazor 回到 Vue
【10月更文挑战第29天】在前端开发中,许多开发者从尝试新技术 Blazor 最终回到熟悉的 Vue。主要原因包括:1) Blazor 学习曲线陡峭,Vue 上手容易;2) Vue 开发工具成熟,开发效率高;3) Vue 性能优异,优化简单;4) Vue 社区庞大,生态丰富;5) 项目需求和团队协作更适配 Vue。选择技术栈需综合考虑多方面因素。
415 0
|
7月前
|
缓存 JavaScript Serverless
vue中computed计算属性、watch侦听器、methods方法的区别以及用法
vue中computed计算属性、watch侦听器、methods方法的区别以及用法
392 0
|
1月前
|
JavaScript
vue实现任务周期cron表达式选择组件
vue实现任务周期cron表达式选择组件
145 4
|
16天前
|
人工智能 自然语言处理 JavaScript
用 CodeBuddy 搭建Vue框架 像呼吸一样简单
本文介绍如何借助 CodeBuddy 快速创建 Vue 项目。CodeBuddy 是一款支持自然语言编程的工具,能根据用户需求自动生成代码,降低开发门槛。文章详细说明了通过 CodeBuddy 创建 Vue 项目的步骤,包括解决项目创建失败的问题、自动补全代码功能以及启动开发服务器的方法。无论开发者经验如何,CodeBuddy 都能显著提升效率,让开发更专注创意实现。