Vue watch用法详解

一、watch的基本使用

Vue.js提供了一种非常方便的方法来观察和响应Vue实例上的数据变化。通过使用watch选项来观察特定的数据属性,当该属性发生变化时,将自动执行所指定的回调函数。

new Vue({
  data: {
    message: 'Hello, Vue.js!'
  },
  watch: {
    message: function(newValue, oldValue) {
      console.log('message变化了!新值为:' + newValue + ',旧值为:' + oldValue);
    }
  }
})

使用watch选项时,需要传入一个对象,该对象的属性是被观察的数据属性,其值为一个回调函数。当被观察的属性发生变化时,Vue.js会自动调用该回调函数,并将被观察属性的新值和旧值作为参数传递给该函数。

二、深度watch

在Vue.js中,如果我们想要监听某个对象的所有属性变化而不是只监听该对象的引用变化,则可以使用深度watch功能。

new Vue({
  data: {
    userInfo: {
      name: 'Tom',
      age: 20
    }
  },
  watch: {
    userInfo: {
      handler: function(newValue, oldValue) {
        console.log('userInfo变化了!新值为:' + JSON.stringify(newValue) + ',旧值为:' + JSON.stringify(oldValue));
      },
      deep: true
    }
  }
})

通过在watch选项中指定deep属性为true,就可以开启深度观察功能,Vue.js会递归地观察对象内部所有的属性,当任何一个属性发生变化时,都会触发回调函数。

三、立即触发watch

有时候,在Vue.js中我们需要在watch被定义时就立即执行一次回调函数,可以在watch选项中使用immediate属性来实现。

new Vue({
  data: {
    message: 'Hello, Vue.js!'
  },
  watch: {
    message: {
      handler: function(newValue, oldValue) {
        console.log('message变化了!新值为:' + newValue + ',旧值为:' + oldValue);
      },
      immediate: true
    }
  }
})

当immediate属性被设置为true时,Vue.js会在watch定义时立即执行一次回调函数,并传递当前数据属性的新值和旧值。

四、计算watch

有些时候,我们需要基于多个数据属性计算出一个新的属性,并在该属性发生变化时执行回调函数。可以在watch选项中使用deep属性为false的计算watch实现。

new Vue({
  data: {
    firstName: 'Tom',
    lastName: 'Smith'
  },
  watch: {
    fullName: function(newValue, oldValue) {
      console.log('fullName变化了!新值为:' + newValue + ',旧值为:' + oldValue);
    }
  },
  computed: {
    fullName: function() {
      return this.firstName + ' ' + this.lastName;
    }
  }
})

在这个示例中,我们已经定义了一个计算属性fullName,该属性会基于firstName和lastName计算出一个新的值。在watch选项中,我们观察了该计算属性,当其发生变化时,就会调用该回调函数。

五、异步watch

有些时候,watch回调函数会触发异步操作,我们可以在watch选项中指定一个回调函数,该函数会在异步操作结束后被调用。

new Vue({
  data: {
    message: 'Hello, Vue.js!'
  },
  watch: {
    message: {
      handler: function(newValue, oldValue) {
        var vm = this;
        setTimeout(function() {
          console.log('message变化了!新值为:' + newValue + ',旧值为:' + oldValue);
          vm.asyncOperation();
        }, 1000);
      },
      immediate: true
    }
  },
  methods: {
    asyncOperation: function() {
      console.log('执行异步操作');
    }
  }
})

在这个示例中,watch回调函数使用了setTimeout模拟异步操作,在异步操作结束后调用了vm.asyncOperation方法。

六、总结

通过本文的介绍,我们可以看到Vue.js中watch用法非常灵活,可以满足大部分的数据观察和响应需求。我们可以根据具体的场景,采用不同的watch选项来完成我们想要的功能。

原创文章,作者:VMHSG,如若转载,请注明出处:https://www.506064.com/n/368393.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
VMHSGVMHSG
上一篇 2025-04-12 01:13
下一篇 2025-04-12 01:13

相关推荐

  • 使用Vue实现前端AES加密并输出为十六进制的方法

    在前端开发中,数据传输的安全性问题十分重要,其中一种保护数据安全的方式是加密。本文将会介绍如何使用Vue框架实现前端AES加密并将加密结果输出为十六进制。 一、AES加密介绍 AE…

    编程 2025-04-29
  • Vue TS工程结构用法介绍

    在本篇文章中,我们将从多个方面对Vue TS工程结构进行详细的阐述,涵盖文件结构、路由配置、组件间通讯、状态管理等内容,并给出对应的代码示例。 一、文件结构 一个好的文件结构可以极…

    编程 2025-04-29
  • Vue3的vue-resource使用教程

    本文将从以下几个方面详细阐述Vue3如何使用vue-resource。 一、安装Vue3和vue-resource 在使用vue-resource前,我们需要先安装Vue3和vue…

    编程 2025-04-27
  • Vue模拟按键按下

    本文将从以下几个方面对Vue模拟按键按下进行详细阐述: 一、Vue 模拟按键按下的场景 在前端开发中,我们常常需要模拟按键按下的场景,比如在表单中填写内容后,按下“回车键”提交表单…

    编程 2025-04-27
  • ThinkPHP6 + Vue.js: 不使用Fetch的数据请求方法

    本文将介绍如何在ThinkPHP6和Vue.js中进行数据请求,同时避免使用Fetch函数。 一、AJAX:XMLHttpRequest的基础使用 在进行数据请求时,最基础的方式就…

    编程 2025-04-27
  • 开发前端程序,Vue是否足够?

    Vue是一个轻量级,高效,渐进式的JavaScript框架,用于构建Web界面。开发人员可以使用Vue轻松完成前端编程,开发响应式应用程序。然而,当涉及到需要更大的生态系统,或利用…

    编程 2025-04-27
  • 如何在Vue中点击清除SetInterval

    在Vue中点击清除SetInterval是常见的需求之一。本文将介绍如何在Vue中进行这个操作。 一、使用setInterval和clearInterval 在Vue中,使用set…

    编程 2025-04-27
  • 神经网络代码详解

    神经网络作为一种人工智能技术,被广泛应用于语音识别、图像识别、自然语言处理等领域。而神经网络的模型编写,离不开代码。本文将从多个方面详细阐述神经网络模型编写的代码技术。 一、神经网…

    编程 2025-04-25
  • Linux sync详解

    一、sync概述 sync是Linux中一个非常重要的命令,它可以将文件系统缓存中的内容,强制写入磁盘中。在执行sync之前,所有的文件系统更新将不会立即写入磁盘,而是先缓存在内存…

    编程 2025-04-25
  • Python输入输出详解

    一、文件读写 Python中文件的读写操作是必不可少的基本技能之一。读写文件分别使用open()函数中的’r’和’w’参数,读取文件…

    编程 2025-04-25

发表回复

登录后才能评论