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

本文涉及的产品
Serverless 应用引擎 SAE,800核*时 1600GiB*时
EMR Serverless StarRocks,5000CU*H 48000GB*H
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
简介: 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 都有自己的适用场景,可以根据具体需求进行选择和使用。


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

相关文章
|
3天前
|
JavaScript 前端开发
vue获取元素属性
vue获取元素属性
12 3
|
16天前
|
JavaScript 开发工具 git
Vue学习之--------脚手架的分析、Ref属性、Props配置(2022/7/28)
这篇文章分析了Vue脚手架的结构,并详细讲解了`ref`属性和`Props`配置的基础知识、代码实现和测试效果,展示了如何在Vue组件中使用`ref`获取DOM元素或组件实例,以及如何通过`Props`传递和接收外部数据。
Vue学习之--------脚手架的分析、Ref属性、Props配置(2022/7/28)
|
16天前
|
缓存 JavaScript
Vue学习之--------计算属性(2022/7/9)
这篇文章通过代码实例和效果测试,详细讲解了Vue计算属性的概念、实现方式、优势以及与插值语法和methods的区别。
Vue学习之--------计算属性(2022/7/9)
|
16天前
|
JavaScript
Vue学习之--------监视属性(2022/7/10)
这篇博客文章详细介绍了Vue框架中的监视属性(watch)功能,通过天气案例展示了监视属性的基础知识、代码实例、测试效果、深度监视、监视属性简写以及在项目中的实际应用。
|
4天前
|
存储 JavaScript 前端开发
Vue应用瘦身秘籍:揭秘Vuex如何重塑你的应用状态,让复杂变简单!🔥
【8月更文挑战第27天】在开发Vue应用时,随着应用规模的增长,组件间通信与状态共享问题日益复杂。Vuex作为Vue官方推荐的状态管理库,提供了集中式存储仓库来管理组件的共享状态,简化状态跟踪与组件通信。Vuex的核心概念包括state(存储状态数据)、mutations(同步修改state)和actions(处理异步操作)。通过一个购物车应用示例展示了如何定义state、mutations及actions,以及如何在Vue组件中使用这些状态管理功能。掌握Vuex有助于提高应用的健壮性和可维护性。
29 0
|
2天前
|
JavaScript 开发者
[译] 监听第三方 Vue 组件的生命周期钩子
[译] 监听第三方 Vue 组件的生命周期钩子
|
2天前
|
JavaScript 前端开发
[译] 复用 Vue 组件的 6 层手段
[译] 复用 Vue 组件的 6 层手段
|
3天前
|
JavaScript 开发者
vue学习之响应式数据绑定
响应式数据绑定
11 0
|
4天前
|
存储 缓存 监控
解锁Vuex性能优化的秘密:让大型Vue应用如丝般顺滑,紧跟技术热点,体验速度与效率的双重飞跃!
【8月更文挑战第27天】Vuex是Vue.js应用程序的状态管理解决方案,它允许开发者集中管理组件间共享的状态。然而,在大型应用中,庞大的状态树可能会影响性能。本文介绍几种优化策略:1)精简状态树,避免存储不必要的数据并通过模块化降低复杂度;2)利用getters缓存计算结果以提高效率;3)通过actions处理异步操作,确保状态更新的同步性和逻辑清晰;4)在组件级别上减少不必要的重渲染;5)使用工具如Vue Devtools进行监控和调试。这些方法有助于提升应用的整体性能和用户体验。
32 0
|
3天前
|
JavaScript API
vue 批量自动引入并注册组件或路由
vue 批量自动引入并注册组件或路由