Vue的watch和computed方法的使用及区别介绍

Vue中的watch和computed都是用来监听数据变化的方法,但在使用时有些差别。下面将对Vue的watch和computed进行详细讲解,并给出两个示例。

Watch

Watch的用法

watch可以监听数据的变化,并进行相应的操作。它可以监听一个或多个数据的变化,当数据发生变化时,会执行相应的回调函数。

watch: {
  username(newVal, oldVal) {
    console.log('新值:' + newVal + ',旧值:' + oldVal)
  }
}

上面的示例中,我们使用watch监听了username这个数据。当username的值发生变化时,回调函数会被调用,并且会接收到两个参数:新值和旧值。

Watch的应用场景

  • 异步操作:watch可以监听 Ajax 请求、用户输入、消息订阅等异步事件,进行操作之后更新数据,从而解决异步数据更新的问题。
  • 复杂计算:当一个数据的改变会影响到多个其它数据的变化的时候,就需要使用watch来监听数据的变化。

Computed

Computed的用法

computed用来声明计算属性,计算属性的值是根据其他属性计算得到的。它会缓存计算结果,在多次读取计算属性时,不会重复计算。

computed: {
  fullName() {
    return this.firstName + " " + this.lastName;
  }
}

上面的示例中,我们声明了一个fullName的计算属性,该计算属性的值是根据firstNamelastName来计算得到的。

Computed的应用场景

  • 计算昂贵的操作:如果一个操作比较昂贵,使用computed可以避免在每次读取值时重新计算,只有在依赖数据发生变化时才重新开始计算。
  • 综合用途:computed可以在模板中使用,而watch不行。computed还可以和v-model结合使用,实现双向绑定。

区别介绍

  • Computed是计算属性,Watch是侦听属性。
  • Computed根据它的依赖缓存计算值,只有当依赖项发生改变时才会重新计算;Watch可以监听到值的变化,在回调函数中实现自定义逻辑。
  • Computed适合用于多个属性相互依赖的情况,当依赖的属性变化时,计算属性会自动更新;Watch更加灵活,可以执行任何逻辑,并且可以监听到一个数组的变化。
  • Computed会有缓存,只要相关属性没有发生改变,多次访问计算属性不会重复计算;watch没有缓存,会在每次数据变化时执行。

示例一

下面是一个使用computed计算属性的例子。在表单的计算属性中使用了一个函数,计算了表单中输入的值的总和。

<template>
  <div>
    <input type="text" v-model="value1">
    <input type="text" v-model="value2">
    <input type="text" v-model="value3">
    <p>总和:{{ total }}</p>
  </div>
</template>

<script>
export default {
  data() {
    return {
      value1: 0,
      value2: 0,
      value3: 0
    };
  },
  computed: {
    total() {
      return parseInt(this.value1) + parseInt(this.value2) + parseInt(this.value3);
    }
  }
};
</script>

示例二

下面是一个使用watch侦听属性的例子。监测两个字段的变化,当两个值都有变化时输出一个信息。

<template>
  <div>
    <input type="text" v-model="value1">
    <input type="text" v-model="value2">
  </div>
</template>

<script>
export default {
  data() {
    return {
      value1: "",
      value2: ""
    };
  },
  watch: {
    value1(newValue, oldValue) {
      if (this.value2) {
        console.log(`value1的新值:${newValue},旧值:${oldValue},value2的值:${this.value2}`);
      }
    },
    value2(newValue, oldValue) {
      if (this.value1) {
        console.log(`value2的新值:${newValue},旧值:${oldValue},value1的值:${this.value1}`);
      }
    }
  }
};
</script>

以上就是Vue的watch和computed方法的使用及区别介绍的攻略。希望对你有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Vue的watch和computed方法的使用及区别介绍 - Python技术站

(0)
上一篇 2023年5月28日
下一篇 2023年5月28日

相关文章

  • 使用Bootstrap + Vue.js实现表格的动态展示、新增和删除功能

    使用Bootstrap + Vue.js来实现动态表格展示、新增和删除功能需要进行以下步骤: 步骤一:引入所需库 在项目中引入Bootstrap和Vue.js两个库,可以使用CDN或在本地引入。 <!– 引入Bootstrap CSS文件 –> <link rel="stylesheet" href="ht…

    Vue 2023年5月27日
    00
  • 详细聊聊vue组件是如何实现组件通讯的

    Vue组件通讯是指在Vue应用中,组件之间通过交互实现信息传递和共享数据的一种方式。Vue提供了多种方式来实现组件通讯,如props、$emit、$parent、$children、eventBus、vuex等。在接下来的篇章中,我们将详细讲解Vue组件通讯的实现方式及其应用场景。 一、Props和$emit 在Vue组件中,子组件可以通过props属性来传…

    Vue 2023年5月29日
    00
  • 详解jquery和vue对比

    详解jQuery和Vue对比 本文将对jQuery和Vue两个前端框架进行详细比较,包括以下内容: 两个框架的基本概念和功能; 两个框架间的异同点; 如何选择一个框架; 基于两个框架的示例说明。 基本概念和功能 jQuery jQuery是一个基于JavaScript的库,为JavaScript提供了跨浏览器的操作和事件处理的功能,使开发者可以使用更简单的语…

    Vue 2023年5月27日
    00
  • Vue如何防止按钮重复点击方案详解

    作为Vue的作者,我来为大家介绍一下Vue如何防止按钮重复点击方案详解。我们知道,当用户不断点击某个按钮时,容易产生多个相同的请求并导致不必要的数据冗余。因此, Vue提供了多种方法防止按钮重复点击,可以有效避免这些不必要的问题。 方案一:防抖函数 防抖函数是一种比较常见的方法,我们可以使用lodash库中的 _.debounce函数实现。防抖函数的原理是在…

    Vue 2023年5月28日
    00
  • 带你熟练掌握Vue3之Pinia状态管理

    带你熟练掌握Vue3之Pinia状态管理攻略 什么是Pinia? Pinia 是一个由 Eduardo San Martin Morote (Vue.js 核心团队成员)开发的 Vue.js3 状态管理库。 相较于 Vuex,在语法上有了很多的优化和改进,个人认为更易于学习使用,这里我们就来看一下如何使用它。 安装 在使用 Pinia 之前,需要确保先安装 …

    Vue 2023年5月27日
    00
  • vue2与vue3双向数据绑定的区别说明

    vue2与vue3双向数据绑定的区别说明 前言 Vue是一款流行的前端框架,最新版本分别为vue2和vue3。其中数据的双向绑定是Vue的一大特色,Vue2和Vue3在双向绑定方面有明显的区别。本文将对Vue2和Vue3双向绑定的区别进行详解,并且提供两条示例说明。 Vue2的双向绑定 在Vue2中,实现双向绑定主要是通过v-model指令来实现的。在一个表…

    Vue 2023年5月27日
    00
  • 微信小程序MUI侧滑导航菜单示例(Popup弹出式,左侧不动,右侧滑动)

    微信小程序MUI侧滑导航菜单示例 微信小程序中,实现侧滑导航菜单是一个常见的需求。常见的导航菜单可以分为三种:弹出式(Popup)、覆盖式(Overlay)和抽屉式(Drawer)。对于简单的需求,我们可以使用MUI框架中提供的侧滑组件来实现。下面我们详细介绍如何使用MUI实现弹出式的导航菜单。 使用MUI实现侧滑导航菜单 首先需要在小程序的app.json…

    Vue 2023年5月27日
    00
  • vue3动态修改打包后的请求路径的操作代码

    要动态修改打包后的请求路径,需要通过修改Vue CLI中的webpack配置实现。下面是具体的步骤: 打开Vue项目所在目录,找到vue.config.js文件。如果该文件不存在则需要手动创建。 使用process.env.BASE_URL获取当前项目的基础路径,然后将该路径保存到变量中,这个变量可以在需要的地方被引用。 javascript const b…

    Vue 2023年5月28日
    00
合作推广
合作推广
分享本页
返回顶部