我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Vue 如何追踪数据变化

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Vue 如何追踪数据变化

背景

工作中时不时就会遇到这种情况:页面上显示的数据不对,需要前端同事进行定位。

在一个使用 Vue 搭建的 SPA 应用上,页面最终展示的数据,从初始化,到最后的展示,过程可能很简单,也可能很复杂。遇到复杂的数据流,没有合适的方法,排查起来会很头疼。

如果能够看到数据发生变化时的调用栈,就可以知道在错误的数据生成前,发生了什么,是哪一步的错误,导致了最终的错误。顺着调用栈给出的线索找下去,就能够快速定位到问题。

例子


<template>
  <div>
    <!-- 预期输出:hello,world -->
    <!-- 实际输出:hello,woold -->
    {{ msg }}
    <button @click="f1">change msg</button>
  </div>
</template>

<script>
export default {
  data() {
    return {
      msg: 'hello,',
    }
  },
  methods: {
    f1() {
      this.msg += 'w'
      this.f2();
    },
    f2() {
      this.msg += 'oo';
      this.f3();
    },
    f3() {
      this.msg += 'ld'
    }
  }
};
</script>

误区 - 在 Watch 里打断点查看调用栈

我们可以在页面右边的 Call Stack 看到 f1 和 msg 的回调,但是看不到 f2 和 f3。也就是说 f2, f3 丢失了,但实际上正是 f2 导致数据发生了错误。

为什么 f2,f3 的调用信息会丢失?

因为 f1, f2, f3 都修改了 msg,在同一个微任务里触发了 msg 的 Watcher,因为 f1 最先触发,所以f2,f3 的触发无效。最终 Watcher 回调运行的时候,只记得是 f1 触发它的,所以此时的 Call Stack 只能看到 f1 的信息。

正确的做法

进入到 node_modules\vue\dist\vue.runtime.esm.js,在 defineReactive 函数的 set 方法里添加断点,这里的 key 就是要监听的变量的名字。

在这里,就能够看到 msg 发生变化的完整过程,快速定位到是 f2 导致的问题。

总结

通过查看调用栈的方式,不需要对项目有多熟悉,就能够快速定位到数据发生错误的地方。相比于用 console.log 或者花很多时间去理清代码逻辑,数据流的方式,可以减少很多的工作量。

以上就是Vue 如何追踪数据变化的详细内容,更多关于Vue 追踪数据变化的资料请关注编程网其它相关文章!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Vue 如何追踪数据变化

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

iterate在数据变更追踪中的应用

在数据变更追踪中,iterate是一个重要的概念,尤其在需要遍历、检查或处理数据集变更情况时。以下是iterate在数据变更追踪中的几个关键应用:数据对比与差异检测:通过iterate函数,可以逐一比较数据集中的元素,从而检测出哪些数据发生
iterate在数据变更追踪中的应用
2024-09-22

vue如何用watch监听数据变化

这篇文章主要介绍“vue如何用watch监听数据变化”,在日常操作中,相信很多人在vue如何用watch监听数据变化问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”vue如何用watch监听数据变化”的疑惑有所
2023-07-04

如何用Python追踪全球各地新冠肺炎数据

如何用Python追踪全球各地新冠肺炎数据,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。随着大规模疫情的爆发,相关的各种信息的传播速度甚至超过了冠状病毒(COVID-19)本身
2023-06-02

触发器在数据变更历史追踪中的精度控制

在数据变更历史追踪中,触发器是一种常用的技术,它允许在数据库中的数据发生特定操作(如插入、更新、删除)时自动执行预定义的动作。通过触发器,可以精确地控制数据变更的记录,确保数据的完整性和可追溯性。触发器在数据变更历史追踪中的应用创建审计表
触发器在数据变更历史追踪中的精度控制
2024-09-26

linux如何实现指针函数追踪方法

这篇文章主要为大家展示了“linux如何实现指针函数追踪方法”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“linux如何实现指针函数追踪方法”这篇文章吧。查看指针函数实际调用了哪个函数:1. 在
2023-06-16

如何在MongoDB中实现数据的实时物流追踪功能

如何在MongoDB中实现数据的实时物流追踪功能物流追踪是供应链管理中的重要环节,通过实时追踪货物的位置和状态,能够帮助企业准确把握货物的流动情况,提高物流效率。在实际的物流管理中,MongoDB作为一种高效的非关系型数据库,能够为实时物流
2023-10-22

如何优化数据库的数据变化

要优化数据库的数据变化,可以考虑以下几个方面:数据库设计:合理设计数据库表结构,避免冗余字段和表,减少数据更新时的复杂性和开销。索引优化:为经常被查询和更新的字段添加索引,提高查询效率和减少数据更新时的开销。批量更新:尽可能使用批量更新操作
如何优化数据库的数据变化
2024-07-03

详解Vue如何监测数组的变化

在Vue中,如果直接对数组进行操作,比如使用下标直接修改元素,数组长度不变时,Vue是无法监测到这种变化的,导致无法触发视图更新。针对该问题本文为大家整理了一些方法,需要的可以参考一下
2023-01-28

php如何监听数据库变化

要监听数据库的变化,可以使用以下两种方法:1. 轮询:在应用程序中设置一个定时器,定期查询数据库以检查是否有变化。可以使用定时器函数(如`setInterval`)来定期执行查询操作。这种方法的缺点是会消耗较多的服务器资源,并且可能会有一定
2023-09-09

vue如何观察slot的变化

这篇文章主要介绍vue如何观察slot的变化,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!如何观察slot的变化有时我们需要知道slot内的内容什么时候发生了变化:
2023-06-27

vue前端测试开发watch如何监听data的数据变化

本篇内容主要讲解“vue前端测试开发watch如何监听data的数据变化”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“vue前端测试开发watch如何监听data的数据变化”吧!watch监听d
2023-06-30

vue如何检测对象和数组的变化

这篇文章主要介绍了vue如何检测对象和数组的变化的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇vue如何检测对象和数组的变化文章都会有所收获,下面我们一起来看看吧。检测对象变化1、不能检测到对象属性的添加或删除
2023-07-04

编程热搜

目录