久久福利_99r_国产日韩在线视频_直接看av的网站_中文欧美日韩_久久一

您的位置:首頁技術文章
文章詳情頁

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

瀏覽:2日期:2022-09-30 17:55:16
背景

工作中時不時就會遇到這種情況:頁面上顯示的數(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)用棧

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

我們可以在頁面右邊的 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_modulesvuedistvue.runtime.esm.js,在 defineReactive 函數(shù)的 set 方法里添加斷點,這里的 key 就是要監(jiān)聽的變量的名字。

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

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

總結(jié)

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

以上就是Vue 如何追蹤數(shù)據(jù)變化的詳細內(nèi)容,更多關于Vue 追蹤數(shù)據(jù)變化的資料請關注好吧啦網(wǎng)其它相關文章!

標簽: Vue
相關文章:
主站蜘蛛池模板: 久久综合久久综合久久综合 | 一级免费毛片 | av网站在线免费观看 | 男人天堂视频网 | 美女久久久久 | 日本欧美久久久久免费播放网 | 91在线中文 | 中文字幕一区二区在线观看 | 狠狠爱亚洲 | 欧美一级片在线观看 | 成人免费淫片aa视频免费 | 精品国产乱码久久久久久88av | 精品无人乱码一区二区三区 | 国产精品日产欧美久久久久 | 精品一区二区三区免费 | 久久久久久综合 | 成人在线黄色 | 91亚洲国产成人久久精品网站 | 欧美中文在线 | a∨在线观看 | 亚洲www啪成人一区二区 | 国产精品视频 | 亚洲精美视频 | 国产精品成人观看视频国产奇米 | 99热在线精品免费 | 91观看在线视频 | 超碰人人操 | 99草视频 | 国产欧美日韩一区 | 毛片毛片毛片毛片毛片毛片 | 亚洲电影在线观看 | 国产精品久久久精品 | 国产精品久久久久久一区二区三区 | 久久久久久国产一级毛片高清版 | 天天天天干 | 国产三区在线观看视频 | 青青草91在线视频 | 中文字幕在线观 | 国内精品一区二区 | 青娱乐国产精品视频 | 免费人成电影 |