千家信息网

vue怎么使用watch监听属性

发表于:2025-01-18 作者:千家信息网编辑
千家信息网最后更新 2025年01月18日,这篇文章主要介绍了vue怎么使用watch监听属性的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇vue怎么使用watch监听属性文章都会有所收获,下面我们一起来看看吧。基
千家信息网最后更新 2025年01月18日vue怎么使用watch监听属性

这篇文章主要介绍了vue怎么使用watch监听属性的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇vue怎么使用watch监听属性文章都会有所收获,下面我们一起来看看吧。

    基本用法

    Vue watch最重要的使用场景是根据某属性的变化执行某些业务逻辑:

    watch的基本用法很简单:针对需要监听的属性定义个同名的函数即可,函数的第一个参数为变化后的值,第二个参数为变化前的值。

    监听object

    首先我们回顾一个JavaScript中的概念:复杂数据变量。"复杂"的原因在于变量只是一个引用,和C++中的指针类似,其保存的不是真实的数据,而是数据的地址。

    比如对于一个object变量来说,添加属性、删除属性、修改属性的值都不会改变这个地址,这也可以说这个object变量没有变化。

    不管所用的框架如何,基本定理肯定是生效的,所以Vue中监听object也是一难题,特别是嵌套数据的监听。

    这里的变化指的是地址的变化,能够触发变化最简单的方式就是重新赋值。

    针对counter的监听不会被触发,因为this.counter[type] += 1;并不会使this.counter变化(地址没变)。那如果想要监听到这个变化应该怎么办呢?一般来说有两种方式:

    使用deep参数

    watch: {  counter: {    handler: function(newV, oldV) {      console.log('counter change to %o from %o', newV, oldV);    },    deep: true,  }}

    使用deep需要使用watch的完整形式:handler是监听回调函数,deep: true指定了不仅仅监听counter的变化,也监听其内部属性的变化,所以当counter.up或counter.down变化时才能出发handler回调。

    重新赋值

    methods: {  onTrigger: function(type) {    // 重新赋值触发变化    this.counter = {      ...this.counter,      [type]: this.counter[type] + 1,    };  }},watch: {  counter: function(newV, oldV) {    // 不会被触发    console.log('counter change to %o from %o', newV, oldV);  },}

    那两种方式优劣如何呢?使用deep参数会为数据每一层都添加监听,当层级较深时比较耗费性能,而且Vue不能监听到属性的添加或删除。

    所以一般来说使用重新赋值的方式是较优的方案,但如果只是想监听内部嵌

    套数据的话,重新赋值就比较重了,所以Vue也提供了直接监听嵌套属性变化的途径:

    通过路径监听内部数据

    watch: {  'counter.up': function(newV, oldV) {    console.log('counter.up change to %d from %d', newV, oldV);  },  'counter.down': function(newV, oldV) {    console.log('counter.down change to %d from %d', newV, oldV);  },}

    通过这种方式可以避免使用deep造成的性能消耗问题,当只对某内部属性变化作出响应的场景下比较合适,但仍要注意监听的路径数据仍是复杂数据时的场景。

    初始化变量触发监听回调

    使用watch监听变化时,给变量初始值不会触发监听函数,如果像要改变这个默认设定可以使用immediate参数,其用法和deep类似:

    watch: {  counter: {    handler: function(newV, oldV) {      console.log('counter change to %o from %o', newV, oldV);    },    immediate: true,  }}

    这样在赋初值时就会触发监听函数,其中第一个参数为初始值,第二个参数为undefined。

    关于"vue怎么使用watch监听属性"这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对"vue怎么使用watch监听属性"知识都有一定的了解,大家如果还想学习更多知识,欢迎关注行业资讯频道。

    监听 变化 属性 数据 参数 变量 函数 方式 地址 复杂 场景 知识 一般来说 内容 只是 性能 篇文章 路径 合适 重要 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 浩顺收银数据库怎么安装上 项目章程模板 软件开发 软件开发java考研究生 正规专业软件开发工期 教你如何守护孩子的网络安全 数据库系统哪五部分 软件开发服务器在哪里买 安泰得软件开发有限公司 网络安全的可行性分析怎么写 福建运营软件开发哪个好 代表了数据库中最小粒 摩羯星gps数据库没有连接 远程服务器系统怎么设置 java 数据库缓存 腾讯新闻的数据库结构 内网穿透是服务器转发吗 数据库多值字段拆分 沈阳商贸软件开发 征途单机数据库在哪 贵州中小学校园网络安全 个人素质对软件开发的影响 数据库应用的视图怎样插入数据 域名查询 所需的数据库 网络安全试卷2含答案 迅帮网络技术怎么样 山东红科网络技术有限公司 型企业网络安全设计方案 物联网应用软件开发聚顶科技 2020年当前网络安全形势 网络安全主题安全教育记录
    0