vue中watch监听器的触发时机(watch的坑及解决)

 更新时间:2022年04月11日 08:51:50   作者:敲完这个我就再也不熬夜了  
这篇文章主要介绍了vue中watch监听器的触发时机(watch的坑及解决),具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

watch监听器的触发时机

起因

我需要在页面created时获得商家的类型id值,然后监听id值,动态的改变请求接口的地址。请求接口的函数在mounted中执行。业务逻辑写完后发现,页面在第一次加载时,接口没有数据,原因接口地址为空,即接口地址没有改变。

代码

 created() {
    this.typeId = this.$route.params.id;
    console.log("this.typeId的值发生改变,触发watch");
  },
  mounted() {
    console.log(this.typeUrl, "mounted中的typeUrl的值");
    //访问接口的函数
    this.getData();
  },

watch

  watch: {
  // 监听订单类型 给出对应面包屑
  typeId: function (val) {
    if (val == 1) {
      console.log("watch触发了");
      this.selfBreadcrumb[1].name = "核销订单";
      this.typeUrl = "settlements";
      console.log(this.typeUrl, "这里是watch");
    } else if (val == 2) {
      this.selfBreadcrumb[1].name = "物流订单";
      this.typeUrl = "logistics-orders";
    } else if (val == 4) {
      this.selfBreadcrumb[1].name = "外卖订单";
      this.typeUrl = "takeout-orders";
    }
  },

控制台

在这里插入图片描述

说明

watch的触发会在created和mounted结束后。

先占个坑,具体原理如何只有等我项目完成了再来康康。

vue watch的理解小记

刚开始学时,感觉自己懂了。可是到用时才发现自己是渣渣中的渣渣。。。

想通过路由id的变化来改变组件的加载数据时,遇到了一个问题,就是,组件不会重新渲染。一脸懵逼了,,,

找到了watch的监控方法时,又用不好。扣扣会用了一些,赶紧记下来。

首先确认 watch是一个对象,一定要当成对象来用。

对象就有键,有值。

  • 键:就是你要监控的那个家伙,比如说$route,这个就是要监控路由的变化。或者是data中的某个变量。
  • 值可以是函数:就是当你监控的家伙变化时,需要执行的函数,这个函数有两个形参,第一个是当前值,第二个是变化后的值。
  • 值也可以是函数名:不过这个函数名要用单引号来包裹。

第三种情况厉害了。

值是包括选项的对象:选项包括有三个。

  • 第一个handler:其值是一个回调函数。即监听到变化时应该执行的函数。
  • 第二个是deep:其值是true或false;确认是否深入监听。(一般监听时是不能监听到对象属性值的变化的,数组的值变化可以听到。)
  • 第三个是immediate:其值是true或false;确认是否以当前的初始值执行handler的函数。
var vm = new Vue({
  data: {
    a: 1,
    b: 2
  },
  watch: {
    a: function (val, oldVal) {
      console.log('new: %s, old: %s', val, oldVal)
    },
    // 方法名
    b: 'someMethod',
    // 选项的对象
    c: {
      handler: function (val, oldVal) { /* ... */ },
      deep: true,
      immediate: true
    }
  }
})

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。 

相关文章

  • vue3 $attrs和inheritAttrs的用法说明

    vue3 $attrs和inheritAttrs的用法说明

    这篇文章主要介绍了vue3 $attrs和inheritAttrs的用法说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-04-04
  • Vue3 去除 vue warn 及生产环境去除console.log的方法

    Vue3 去除 vue warn 及生产环境去除console.log的方法

    这篇文章主要介绍了Vue3 去除 vue warn 及生产环境去除console.log的方法,本文结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-06-06
  • vue项目中js文件使用vue的this实例说明

    vue项目中js文件使用vue的this实例说明

    这篇文章主要介绍了vue项目中js文件使用vue的this实例说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-12-12
  • DeepSeek 助力 Vue 开发丝滑的表单验证Form Validation功能

    DeepSeek 助力 Vue 开发丝滑的表单验证Form Validation功能

    文章介绍了如何使用Vue3的组合式API创建一个表单验证组件,并提供了详细的代码示例,组件支持双向绑定、自定义验证规则、样式和布局等功能,还涵盖了组件的调用示例、路由配置和页面展示入口
    2025-02-02
  • vue3+vite引入插件unplugin-auto-import的方法

    vue3+vite引入插件unplugin-auto-import的方法

    这篇文章主要介绍了vue3+vite引入插件unplugin-auto-import的相关知识,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值 ,需要的朋友可以参考下
    2022-10-10
  • vue封装组件js版基本步骤

    vue封装组件js版基本步骤

    这篇文章主要为大家介绍了vue封装组件js版基本步骤,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-04-04
  • vue.js路由的基本使用方式

    vue.js路由的基本使用方式

    VueRouter是Vue.js的官方路由插件,用于实现单页应用的页面切换和导航,通过安装、配置路由规则、定义路由组件和使用<router-link>、<router-view>标签
    2025-01-01
  • 解决cordova+vue 项目打包成APK应用遇到的问题

    解决cordova+vue 项目打包成APK应用遇到的问题

    这篇文章主要介绍了解决cordova+vue 项目打包成APK应用遇到的问题,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-05-05
  • Vue装饰器中的vue-property-decorator 和 vux-class使用详解

    Vue装饰器中的vue-property-decorator 和 vux-class使用详解

    这篇文章主要介绍了Vue装饰器中的vue-property-decorator 和 vux-class使用详解,通过示例代码给大家介绍的非常详细,对vue-property-decorator 和 vux-class的使用感兴趣的朋友一起看看吧
    2022-08-08
  • VueTreeselect 参数options的数据转换-参数normalizer解析

    VueTreeselect 参数options的数据转换-参数normalizer解析

    这篇文章主要介绍了VueTreeselect 参数options的数据转换-参数normalizer解析,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-07-07

最新评论