老生常谈Vue中的侦听器watch

 更新时间:2022年10月15日 12:09:33   作者:东非不开森  
开发中我们在data返回的对象中定义了数据,这个数据通过插值语法等方式绑定到template中,这篇文章主要介绍了Vue中的侦听器watch,需要的朋友可以参考下

一、侦听器watch

(思维导图不太完善,因为是按照自己看懂的方式记的,如有错误,还请指正)

1.1.初识侦听器watch

⭐⭐
watch:观看,监视

那么什么是侦听器watch

  • 开发中我们在data返回的对象中定义了数据,这个数据通过插值语法等方式绑定到template中;
  • 当数据变化时,template会自动进行更新来显示最新的数据;
  • 但是在某些情况下,我们希望在代码逻辑中监听某个数据的变化,这个时候就需要用侦听器watch来完成了;

1.2.Vue的data的watch

⭐⭐
案例:

  • 我们希望用户在input中输入一个问题;
  • 每当用户输入了最新的内容,我们就获取到最新的内容,并且使用该问题去服务器查询答案;
  • 那么,我们就需要实时的去获取最新的数据变化;
  • 此时就要用到侦听器watch去监听数据是否发生变化
const app = Vue.createApp({
        data() {
          return {
            message: "Hello Vue",
            info: { name: "kk", age: 18 },
          };
        },
        methods: {
          changeMessage() {
            this.message = "hello kk";
            this.info = { name: "kk" };
          },
        },

        watch: {
          // 1.默认有两个参数,newValue/oldValue
          message(newValue, oldVale) {
            console.log("message数据发生了变化", newValue, oldValue);
          },
          info(newValue, oldValue) {
            // 2.如果是对象类型,那么拿到的是代理对象
            console.log("info数据发生了变化", newValue, oldValue);
            console.log(newValue.name, oldValue.name);

            // 3.获取原始对象
            console.log({ ...newValue });

1.3.Vue的watch侦听选项

⭐⭐

  • 创建一个对象,赋值给info
  • 点击按钮的时候会修改info.name的值
  • 此时使用watch并不能侦听info,因为默认情况下,watch只是在侦听info的引用变化,对于内部属性的变化是不会做出响应的
  • 所以我们可以使用deep深度监听
  • 希望一开始的就会立即执行一次:这个时候我们使用immediate选项;无论数据是否变化,侦听的函数都会有限执行一次的
<div id="app">
      <h2>{{info.name}}</h2>
      <button @click="changeInfo">修改info</button>
    </div>
 const app = Vue.createApp({
        data() {
          return {
            info: { name: "kk", age: 18 },
          };
        },

        methods: {
          changeInfo() {
            // 创建一个对象,赋值给info
            this.info = { name: "kk" };

            // 直接修改对象里的一个属性
            this.info.name = "kk";
          },
        },

        watch: {
          // 默认watch监听不会进行深度监听
          info(newValue, oldValue) {
            console.log("侦听到info改变", newValue, oldValue);
          },

          // 进行深度监听
          info: {
            handler(newValue, oldValue) {
              console.log("侦听到info改变", newValue, oldValue);
              console.log(newValue === oldValue);
            },

            // 监听器选项
            // info进行深度监听
            deep: true,

            // 第一次渲染直接执行一次监听器
            immediate: true,
          },
        },

        "info.name": function (newValue, oldValue) {
          console.log("name发生改变", newValue, oldValue);
        },
      });

      app.mount("#app");

到此这篇关于Vue中的侦听器watch的文章就介绍到这了,更多相关Vue侦听器watch内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Vue-cli3.X使用px2 rem遇到的问题及解决方法

    Vue-cli3.X使用px2 rem遇到的问题及解决方法

    这篇文章主要介绍了Vue-cli3.X使用px2rem遇到的问题及解决方法,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-08-08
  • Vue单页及多页应用全局配置404页面实践记录

    Vue单页及多页应用全局配置404页面实践记录

    无论单页还是多页,我的实现思路是总体配置404页面的思路就是在前端路由表中添加一个 path: '/404' 的路由,渲染相应的404页面。这篇文章主要介绍了Vue单页及多页应用全局配置404页面实践,需要的朋友可以参考下
    2018-05-05
  • Vue3实现全局loading指令的示例详解

    Vue3实现全局loading指令的示例详解

    这篇文章主要介绍了Vue3实现全局loading指令,本文通过示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-06-06
  • Vue中methods的this指向问题浅析

    Vue中methods的this指向问题浅析

    相信我们写Vue代码时肯定都会在methods中用过this这个关键字,甚至还打印过this查看其内容。最终发现该实例对象竟然是我们的Vue实例对象
    2022-10-10
  • vue函数防抖与节流的正确使用方法

    vue函数防抖与节流的正确使用方法

    防抖和节流的作用都是防止函数多次调用,下面这篇文章主要给大家介绍了关于vue函数防抖与节流的正确使用方法,需要的朋友可以参考下
    2021-05-05
  • 教你使用vue-autofit 一行代码搞定自适应可视化大屏

    教你使用vue-autofit 一行代码搞定自适应可视化大屏

    这篇文章主要为大家介绍了使用vue-autofit 一行代码搞定自适应可视化大屏教程详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-05-05
  • 基于Vue的文字跑马灯组件(npm 组件包)

    基于Vue的文字跑马灯组件(npm 组件包)

    这篇文章主要介绍了基于Vue的文字跑马灯组件(npm 组件包),需要的朋友可以参考下
    2017-05-05
  • 详解Vue之父子组件传值

    详解Vue之父子组件传值

    这篇文章主要介绍了Vue之父子组件传值,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-04-04
  • vue.js实例todoList项目

    vue.js实例todoList项目

    本篇文章主要介绍了vue.js实例todoList项目,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-07-07
  • vue脚手架项目创建步骤详解

    vue脚手架项目创建步骤详解

    这篇文章主要介绍了vue脚手架项目创建步骤详解,文章讲解的很清晰,初学者可以跟着步骤学习下
    2021-03-03

最新评论