广告
返回顶部
首页 > 资讯 > 前端开发 > JavaScript >Vue 如何追踪数据变化
  • 194
分享到

Vue 如何追踪数据变化

2024-04-02 19:04:59 194人浏览 安东尼
摘要

目录背景例子误区 - 在 Watch 里打断点查看调用栈正确的做法总结背景 工作中时不时就会遇到这种情况:页面上显示的数据不对,需要前端同事进行定位。 在一个使用 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 追踪数据变化的资料请关注编程网其它相关文章!

--结束END--

本文标题: Vue 如何追踪数据变化

本文链接: https://www.lsjlt.com/news/123191.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

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

下载Word文档
猜你喜欢
  • Vue 如何追踪数据变化
    目录背景例子误区 - 在 Watch 里打断点查看调用栈正确的做法总结背景 工作中时不时就会遇到这种情况:页面上显示的数据不对,需要前端同事进行定位。 在一个使用 Vue 搭建的 ...
    99+
    2022-11-12
  • 如何使用 Git 追踪 ASP 函数和 Spring 项目的变化?
    Git 是一个流行的分布式版本控制系统,它可以帮助开发人员追踪代码的变化和管理代码库。在本文中,我们将探讨如何使用 Git 追踪 ASP 函数和 Spring 项目的变化。 Git 的基本概念 在开始之前,我们需要了解一些 Git 的基本概...
    99+
    2023-09-05
    函数 spring git
  • 如何用Python追踪全球各地新冠肺炎数据
    如何用Python追踪全球各地新冠肺炎数据,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。随着大规模疫情的爆发,相关的各种信息的传播速度甚至超过了冠状病毒(COVID-19)本身...
    99+
    2023-06-02
  • linux如何实现指针函数追踪方法
    这篇文章主要为大家展示了“linux如何实现指针函数追踪方法”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“linux如何实现指针函数追踪方法”这篇文章吧。查看指针函数实际调用了哪个函数: 在内核...
    99+
    2023-06-16
  • vue如何用watch监听数据变化
    这篇文章主要介绍“vue如何用watch监听数据变化”,在日常操作中,相信很多人在vue如何用watch监听数据变化问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”vue如何用watch监听数据变化”的疑惑有所...
    99+
    2023-07-04
  • 如何在MongoDB中实现数据的实时物流追踪功能
    如何在MongoDB中实现数据的实时物流追踪功能物流追踪是供应链管理中的重要环节,通过实时追踪货物的位置和状态,能够帮助企业准确把握货物的流动情况,提高物流效率。在实际的物流管理中,MongoDB作为一种高效的非关系型数据库,能够为实时物流...
    99+
    2023-10-22
    MongoDB 物流追踪 实时
  • vue如何实时往数组里追加数据
    目录实时往数组里追加数据数组追加合并与对象追加合并实时往数组里追加数据 使用Vue.set() 以下来解读一下 Vue.set(this.tableDatas, this.selec...
    99+
    2022-11-13
  • vue如何使用watch监听指定数据的变化
    目录使用watch监听指定数据的变化vue watch监听多个值使用watch监听指定数据的变化  在vue中,可以使用watch属性来监听data中某个属性值的变化。 &...
    99+
    2022-11-13
  • vue数据变化但页面刷新问题
    目录vue数据变化但页面刷新watch监听到数据的变化但页面没有刷新没有监听到数据的变化改变了数据却没有自动刷新说下结论vue数据变化但页面刷新 watch监听到数据的变化但页面没有...
    99+
    2022-11-13
  • 关于vue中如何监听数组变化
    目录前言源码部分从哪开始第一步学习呢从图开始看看源码吧前言 前段时间学习了关于vue中响应式数据的原理,(并作了学习笔记vue响应式原理),其实是通过Object.definePro...
    99+
    2022-11-12
  • 详解Vue如何监测数组的变化
    目录一、使用 Vue.js 提供的方法来更新数组二、使用专门用于监测数组变化的语法糖三、使用Vue.observable()函数四、使用 computed 属性和 watch 属性监...
    99+
    2023-01-28
    Vue监测数组变化 Vue 数组变化 Vue 数组
  • vue中是如何检测数组变化的
    vue中检测数组变化的方法:vue使用函数劫持的方式,通过重写数组的某些方法来检测数组变化。在将数组处理成响应式数据后,如果使用数组原始方法改变数组时,数组值会发生变化,但是并不会触发数组的setter来通知所有依赖该数组的地方进行更新,若...
    99+
    2022-10-04
  • vue中watch如何自动检测数据变化实时渲染
    小编给大家分享一下vue中watch如何自动检测数据变化实时渲染,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!具体如下:首先确认...
    99+
    2022-10-19
  • php如何监听数据库变化
    要监听数据库的变化,可以使用以下两种方法:1. 轮询:在应用程序中设置一个定时器,定期查询数据库以检查是否有变化。可以使用定时器函数...
    99+
    2023-09-09
    php 数据库
  • vue中怎么利用watch监听数据变化
    vue中怎么利用watch监听数据变化,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。1、watch使用的几种方法(1)通过watch监听dat...
    99+
    2022-10-19
  • vue前端测试开发watch如何监听data的数据变化
    本篇内容主要讲解“vue前端测试开发watch如何监听data的数据变化”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“vue前端测试开发watch如何监听data的数据变化”吧!watch监听d...
    99+
    2023-06-30
  • vue如何检测对象和数组的变化
    这篇文章主要介绍了vue如何检测对象和数组的变化的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇vue如何检测对象和数组的变化文章都会有所收获,下面我们一起来看看吧。检测对象变化1、不能检测到对象属性的添加或删除...
    99+
    2023-07-04
  • vue如何观察slot的变化
    这篇文章主要介绍vue如何观察slot的变化,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!如何观察slot的变化有时我们需要知道slot内的内容什么时候发生了变化:<!-- 可惜这个活动不存在&nbs...
    99+
    2023-06-27
  • Vue中监听数据变化的原理是什么
    这期内容当中小编将会给大家带来有关Vue中监听数据变化的原理是什么,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。浅度监听<!DOCTYPE html>...
    99+
    2022-10-19
  • Vue数据变化后页面更新详细介绍
    首先会通过module.hot.accept监听文件变化,并传入该文件的渲染函数: module.hot.accept( "./App.vuevue&type=templat...
    99+
    2022-11-13
    Vue页面更新 Vue数据变化后页面更新
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作