欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Vue 如何追蹤數(shù)據(jù)變化

 更新時間:2021年04月09日 10:22:26   作者:用戶3111253633426  
這篇文章主要介紹了Vue 如何追蹤數(shù)據(jù)變化,幫助大家更好的理解和學習使用vue框架,感興趣的朋友可以了解下

背景

工作中時不時就會遇到這種情況:頁面上顯示的數(shù)據(jù)不對,需要前端同事進行定位。

在一個使用 Vue 搭建的 SPA 應用上,頁面最終展示的數(shù)據(jù),從初始化,到最后的展示,過程可能很簡單,也可能很復雜。遇到復雜的數(shù)據(jù)流,沒有合適的方法,排查起來會很頭疼。

如果能夠看到數(shù)據(jù)發(fā)生變化時的調(diào)用棧,就可以知道在錯誤的數(shù)據(jù)生成前,發(fā)生了什么,是哪一步的錯誤,導致了最終的錯誤。順著調(diào)用棧給出的線索找下去,就能夠快速定位到問題。

例子

<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>

誤區(qū) - 在 Watch 里打斷點查看調(diào)用棧

我們可以在頁面右邊的 Call Stack 看到 f1 和 msg 的回調(diào),但是看不到 f2 和 f3。也就是說 f2, f3 丟失了,但實際上正是 f2 導致數(shù)據(jù)發(fā)生了錯誤。

為什么 f2,f3 的調(diào)用信息會丟失?

因為 f1, f2, f3 都修改了 msg,在同一個微任務里觸發(fā)了 msg 的 Watcher,因為 f1 最先觸發(fā),所以f2,f3 的觸發(fā)無效。最終 Watcher 回調(diào)運行的時候,只記得是 f1 觸發(fā)它的,所以此時的 Call Stack 只能看到 f1 的信息。

正確的做法

進入到 node_modules\vue\dist\vue.runtime.esm.js,在 defineReactive 函數(shù)的 set 方法里添加斷點,這里的 key 就是要監(jiān)聽的變量的名字。

在這里,就能夠看到 msg 發(fā)生變化的完整過程,快速定位到是 f2 導致的問題。

總結(jié)

通過查看調(diào)用棧的方式,不需要對項目有多熟悉,就能夠快速定位到數(shù)據(jù)發(fā)生錯誤的地方。相比于用 console.log 或者花很多時間去理清代碼邏輯,數(shù)據(jù)流的方式,可以減少很多的工作量。

以上就是Vue 如何追蹤數(shù)據(jù)變化的詳細內(nèi)容,更多關(guān)于Vue 追蹤數(shù)據(jù)變化的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Vue Router深扒實現(xiàn)原理

    Vue Router深扒實現(xiàn)原理

    在看這篇文章的幾點要求:需要你先知道Vue-Router是個什么東西,用來解決什么問題,以及它的基本使用。如果你還不懂的話,建議上官網(wǎng)了解下Vue-Router的基本使用后再回來看這篇文章
    2022-09-09
  • 使用Vue-Router 2實現(xiàn)路由功能實例詳解

    使用Vue-Router 2實現(xiàn)路由功能實例詳解

    vue-router 2只適用于Vue2.x版本,下面我們是基于vue2.0講的如何使用vue-router 2實現(xiàn)路由功能,需要的朋友可以參考下
    2017-11-11
  • animate.css在vue項目中的使用教程

    animate.css在vue項目中的使用教程

    在vue項目中使用動畫其實有多種方式,可以使用vue中的過渡transition,可以使用animate動畫與transition配合使用,也可以單獨使用animate動畫庫,下面我們開始介紹在vue中單獨使用animate動畫,感興趣的朋友一起看看吧
    2018-08-08
  • vue-cli基礎(chǔ)配置及webpack配置修改的完整步驟

    vue-cli基礎(chǔ)配置及webpack配置修改的完整步驟

    這篇文章主要給大家介紹了關(guān)于vue-cli基礎(chǔ)配置及webpack配置修改的完整步驟,文中通過示例代碼介紹的非常詳細,對大家的學習或者使用vue-cli具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2019-10-10
  • Vue實現(xiàn)點擊后文字變色切換方法

    Vue實現(xiàn)點擊后文字變色切換方法

    下面小編就為大家分享一篇Vue實現(xiàn)點擊后文字變色切換方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-02-02
  • Vue兼容ie9的問題全面解決方案

    Vue兼容ie9的問題全面解決方案

    這篇文章主要介紹了Vue兼容ie9的問題全面解決方案,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-06-06
  • Vue框架下引入ActiveX控件的問題解決

    Vue框架下引入ActiveX控件的問題解決

    這篇文章主要介紹了Vue框架下引入ActiveX控件的問題解決,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-03-03
  • Vue 中 onclick和@click區(qū)別解析

    Vue 中 onclick和@click區(qū)別解析

    這篇文章主要介紹了Vue 中 onclick和@click區(qū)別,簡單點說就是onclick 只能觸發(fā) js的原生方法,不能觸發(fā)vue的封裝方法,@click 只能觸發(fā)vue的封裝方法,不能觸發(fā)js的原生方法,需要的朋友可以參考下
    2024-02-02
  • vue升降版本以及如何查看項目版本

    vue升降版本以及如何查看項目版本

    這篇文章主要給大家介紹了關(guān)于vue升降版本以及如何查看項目版本的相關(guān)資料,在開發(fā)和維護Vue.js應用程序時了解所使用的Vue.js版本非常重要,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2023-12-12
  • vue組件中節(jié)流函數(shù)的失效的原因和解決方法

    vue組件中節(jié)流函數(shù)的失效的原因和解決方法

    這篇文章主要介紹了vue組件中節(jié)流函數(shù)的失效和解決方法,幫助大家更好的理解和學習vue框架,感興趣的朋友可以了解下
    2020-12-12

最新評論