av一区二区在线观看_亚洲男人的天堂网站_日韩亚洲视频_在线成人免费_欧美日韩精品免费观看视频_久草视

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

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

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

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

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

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

例子

<template> <div> <!-- 預(yù)期輸出:hello,world --> <!-- 實(shí)際輸出: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ǎn)查看調(diào)用棧

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

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

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

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

正確的做法

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

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

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

總結(jié)

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

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

標(biāo)簽: Vue
相關(guān)文章:
主站蜘蛛池模板: 一区二区三区精品 | 成人日批视频 | 国产一区二区三区四 | 在线综合视频 | 亚洲成人免费在线 | 亚洲成人一级 | 日韩精品一区二区三区四区视频 | 亚洲在线一区二区 | 色先锋影音 | 日韩视频精品在线 | 欧美第一区 | 一区二区在线免费观看 | 久久免费观看视频 | 国产视频中文字幕 | 成人网在线 | 九九热精品视频 | 免费在线黄色av | 国产美女h视频 | 久久久爽爽爽美女图片 | 久久精品免费观看 | 国产亚洲精品精品国产亚洲综合 | 日韩在线精品视频 | 日本 欧美 三级 高清 视频 | 毛片一区二区 | 成人欧美一区二区三区黑人孕妇 | 不卡一区 | wwwxxx日本在线观看 | 亚洲精品高清视频在线观看 | 欧美五月婷婷 | 成年人精品视频 | 最新中文字幕第一页视频 | japanhdxxxx裸体| 久久久www成人免费精品 | 欧美成人二区 | 97色在线观看免费视频 | 亚州精品天堂中文字幕 | xxxxx黄色片 欧美一区免费 | 精品婷婷| 成人av网站在线观看 | 国产黄色网址在线观看 | 欧美色偷拍|