VUE watch监听器的基本使用方法详解

标题:VUE watch监听器的基本使用方法详解

什么是VUE watch监听器

Vue.js 提供了一个叫做 watch 的属性,用于监听数据的变化,当监听的数据发生变化时,执行回调函数或者做一些其他的操作。

如何在组件中使用VUE watch监听器

在 Vue 组件中使用 watch,需要在组件内部声明一个 watch 配置对象,并指定要监听的数据和该数据改变时触发的回调函数。

以下示例演示了基本的 watch 的使用方法:

<template>
  <div>
    <p>{{ count }}</p>
    <button @click="increment">+1</button>
  </div>
</template>

<script>
export default {
  data() {
    return {
      count: 0
    }
  },
  watch: {
    count(newValue, oldValue) {
      console.log('count 变为:' + newValue)
    }
  },
  methods: {
    increment() {
      this.count++
    }
  }
}
</script>

在上面的代码中,我们定义了一个计数器组件,该组件有一个 data 属性 count,还有一个方法 increment,用于增加 count。然后我们在组件配置对象 watch 中监听了 count 的变化,当 count 改变时,会触发 watch 中定义的回调函数。

值得注意的是,当 VUE 组件被销毁时,自定义的 watch 监听器会自动删除,无需担心内存泄漏问题。

watch 实例

下面我们来进行一个更加复杂的示例,演示 watch 应用的实际场景。

现在我们有一个商品列表,列表中的商品可以被添加、删除、修改。同时,页面中有一个统计总价的栏目,需要在商品变化时自动更新总价。

<template>
  <div>
    <ul>
      <li v-for="item in items" :key="item.id">
        <input type="text" v-model="item.name"></input>
        <input type="text" v-model.number="item.price"></input>
        <button @click="remove(item)">删除</button>
      </li>
    </ul>
    <p>总价格:{{ total }}</p>
    <button @click="add">添加商品</button>
  </div>
</template>

<script>
export default {
  data() {
    return {
      items: [
        { id: 1, name: '商品1', price: 10 },
        { id: 2, name: '商品2', price: 20 },
        { id: 3, name: '商品3', price: 30 }
      ]
    }
  },
  computed: {
    total() {
      return this.items.reduce((total, item) => {
        return total + item.price
      }, 0)
    }
  },
  methods: {
    add() {
      this.items.push({ id: Date.now(), name: '', price: 0 })
    },
    remove(item) {
      const index = this.items.indexOf(item)
      this.items.splice(index, 1)
    }
  },
  watch: {
    items: {
      handler(newItems, oldItems) {
        console.log('商品列表变为:', newItems)
      },
      deep: true
    }
  }
}
</script>

在上面的代码中,我们通过定义了一个 items 数组,该数组中的每一个元素都是一个商品,包含商品名称和商品价格属性。我们在 computed 中定义了一个计算属性 total,用于统计所有商品价格之和。然后我们定义了 add 和 remove 两个方法,用于添加和删除商品。

最后我们定义了一个 watch 监听器,用于监听 items 数组的变化。在监听到变化时,会执行 watch 中定义的回调函数。

值得注意的是,我们在 watch 中设置了 deep 选项,表示要对 items 数组中的每一个元素进行深度监测。否则,当 items 数组中的元素发生变化时,watch 监听器将会无法监听到。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:VUE watch监听器的基本使用方法详解 - Python技术站

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

相关文章

  • Vue3 PC端页面开发规范及说明

    Vue3 PC端页面开发规范及说明 1. 项目结构 在Vue3项目中,按照以下目录结构组织项目,便于代码管理和维护: project-name/ ├── public/ │ ├── index.html │ └── … ├── src/ │ ├── assets/ // 存放图片、字体等静态资源 │ ├── components/ // 公共组件 │ ├…

    Vue 2023年5月27日
    00
  • Vue.Draggable使用文档超详细总结

    Vue.draggable使用文档超详细总结 介绍 Vue.draggable是一个基于Sortable.js实现的Vue.js拖放库。它允许您在应用程序中轻松创建可拖放的UI组件,同时提供许多配置选项,使您能够自定义拖动行为。以下是Vue.draggable提供的主要功能: 支持嵌套列表和树形结构 支持拖放元素并在不同列表之间排序 支持组件自定义渲染以及自…

    Vue 2023年5月27日
    00
  • vue的事件绑定与方法详解

    下面是关于“vue的事件绑定与方法详解”的完整攻略。 什么是Vue事件绑定? 在Vue应用程序中,事件绑定用于监听DOM元素上的事件,以响应用户的交互操作。当用户对指定的DOM元素进行操作时,Vue会自动检测DOM事件,并触发指定的Vue方法。 事件绑定语法: <button v-on:click="doSomething">…

    Vue 2023年5月28日
    00
  • js基于div丝滑实现贝塞尔曲线

    下面就是详细讲解“js基于div丝滑实现贝塞尔曲线”的完整攻略。 1. 什么是贝塞尔曲线? 贝塞尔曲线是一种使用平滑曲线连接任意多个点的数学函数,并且通过更改这些点的锚点信息来改变曲线的特性。在前端网站开发中,贝塞尔曲线经常被用来创建各种交互效果,如动画、滑动、转场等。 2. 为什么要基于div实现贝塞尔曲线? 虽然在SVG和canvas中也可以实现贝塞尔曲…

    Vue 2023年5月28日
    00
  • 理解Proxy及使用Proxy实现vue数据双向绑定操作

    理解 Proxy 在 JavaScript 中,对象是一种引用类型,对象的属性只是指向变量的一个指针。因为这个特性,我们可以获得代理模式的能力:在对象创建之后,可以创建一个代理来控制对象的访问或操作。 Proxy 对象用于定义基本操作的自定义行为(如属性查找,赋值,枚举,函数调用等)。这样,我们可以在读取或修改对象属性时插入其他逻辑,例如数据绑定。 在使用 …

    Vue 2023年5月28日
    00
  • vue3使用vis绘制甘特图制作timeline可拖动时间轴及时间轴中文化(推荐)

    下面我会详细讲解使用Vue3和vis库绘制甘特图制作timeline可拖动时间轴及时间轴中文化的攻略。 1. 安装vis库 vis库是一个用于数据可视化的JavaScript库,可以使用它创建各种类型的图表和视图。在Vue3项目中使用vis库,可以通过以下命令进行安装: npm install vis 2. 创建Vue3组件 接下来创建一个Vue3组件,用于…

    Vue 2023年5月29日
    00
  • Vue如何使用Dayjs计算常用日期详解

    下面是使用Vue以及Dayjs计算常用日期的攻略详解: Dayjs是什么? Dayjs是一个轻量级、没有依赖的JavaScript日期处理库,它具有Moment.js的许多相同的特性,如轻量级、格式化、解析、时间戳、时间段、相对时间等。 如何在 Vue 项目中使用 Dayjs? 1.安装 dayjs npm install dayjs 2.在 Vue 项目中…

    Vue 2023年5月28日
    00
  • 使用Vuex实现一个笔记应用的方法

    使用Vuex实现一个笔记应用的方法可以分为以下几个步骤: 步骤1: 安装Vuex 首先需要安装Vuex,可以使用npm命令进行安装。 npm install vuex –save 步骤2: 创建Vuex Store 创建一个store.js文件,并将Vuex引入。 import Vuex from ‘vuex’ Vue.use(Vuex) const st…

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