Vue渲染父子組件時需要注意的點(diǎn)


title: Vue渲染父子組件時需要注意的點(diǎn)
date: 2018-11-19 18:55:58
tags: [Vue]
categories: Vue


前言

我在邊學(xué) Vue 邊做 轱轆UI 的項(xiàng)目中泥技,寫 row 組件測試用例時碰到了一個問題。
測試用例需要渲染兩個組件派继,它們是父子關(guān)系,但測試下來子組件并沒有拿到父組件的 gutter 屬性陵霉,發(fā)現(xiàn)原來是因?yàn)?Vue 異步的渲染囤热。
之后通過 setTimeoutdone() 解決了這一問題鹊碍,之后便有了這篇博客。

分析

Vue到底是怎樣渲染組件到頁面的胡桃?看例子來分析吧

我們自己會怎么寫:

// 這是個同步的過程
var div = document.createElement('div')
document.body.appendChild(div)

而 Vue 不是這么簡單的:

var div = document.createElement('div')
var child = document.createElement('div')
// 步驟一踩叭,會觸發(fā)child的mounted事件,這是異步的
div.appendChild(child)
// 步驟二翠胰,會觸發(fā)div的mounted事件容贝,這也是異步的
document.body.appendChild(div)
// 步驟三,這行代碼會先于上面兩行執(zhí)行之景,因?yàn)檫@是同步的嗤疯,而此時div里還沒有child
console.log(div.outerHTML)

執(zhí)行順序:步驟三 → 步驟一 → 步驟二

Vue 鉤子的調(diào)用并不是同步的。

假如是同步的闺兢,mounted你寫了幾百行代碼茂缚,則需要大量的運(yùn)算,那Vue豈不是要等你執(zhí)行完再繼續(xù)屋谭?
所以 Vue 不應(yīng)該等脚囊,Vue 應(yīng)該優(yōu)先完成元素的渲染,這是一個異步的觸發(fā)

解決

我預(yù)想子組件會通過 mounted 鉤子拿到父組件傳來的 gutter 屬性桐磁,但我的測試用例執(zhí)行時悔耘,實(shí)際上還沒有執(zhí)行 mounted 鉤子,所以子組件才沒有拿到這個 gutter 屬性的值我擂。

知道了原因衬以,那么就好解決了,用 setTimeout(){}

另外由于測試框架默認(rèn)都是同步的代碼(這是測試框架的一個約定)校摩,所以要在參數(shù)中加上 done 看峻,在我的測試用例執(zhí)行完時調(diào)用 done()

這樣衙吩,就解決了互妓。具體代碼可在此點(diǎn)擊

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市冯勉,隨后出現(xiàn)的幾起案子澈蚌,更是在濱河造成了極大的恐慌,老刑警劉巖灼狰,帶你破解...
    沈念sama閱讀 207,248評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件宛瞄,死亡現(xiàn)場離奇詭異,居然都是意外死亡交胚,警方通過查閱死者的電腦和手機(jī)份汗,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,681評論 2 381
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來承绸,“玉大人,你說我怎么就攤上這事挣轨【” “怎么了?”我有些...
    開封第一講書人閱讀 153,443評論 0 344
  • 文/不壞的土叔 我叫張陵卷扮,是天一觀的道長荡澎。 經(jīng)常有香客問我,道長晤锹,這世上最難降的妖魔是什么摩幔? 我笑而不...
    開封第一講書人閱讀 55,475評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮鞭铆,結(jié)果婚禮上或衡,老公的妹妹穿的比我還像新娘。我一直安慰自己车遂,他們只是感情好封断,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,458評論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著舶担,像睡著了一般坡疼。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上衣陶,一...
    開封第一講書人閱讀 49,185評論 1 284
  • 那天柄瑰,我揣著相機(jī)與錄音,去河邊找鬼剪况。 笑死教沾,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的译断。 我是一名探鬼主播详囤,決...
    沈念sama閱讀 38,451評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了藏姐?” 一聲冷哼從身側(cè)響起隆箩,我...
    開封第一講書人閱讀 37,112評論 0 261
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎羔杨,沒想到半個月后捌臊,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,609評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡兜材,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,083評論 2 325
  • 正文 我和宋清朗相戀三年理澎,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片曙寡。...
    茶點(diǎn)故事閱讀 38,163評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡糠爬,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出举庶,到底是詐尸還是另有隱情执隧,我是刑警寧澤,帶...
    沈念sama閱讀 33,803評論 4 323
  • 正文 年R本政府宣布户侥,位于F島的核電站镀琉,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏蕊唐。R本人自食惡果不足惜屋摔,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,357評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望替梨。 院中可真熱鬧钓试,春花似錦、人聲如沸副瀑。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,357評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽俗扇。三九已至硝烂,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間铜幽,已是汗流浹背滞谢。 一陣腳步聲響...
    開封第一講書人閱讀 31,590評論 1 261
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留除抛,地道東北人狮杨。 一個月前我還...
    沈念sama閱讀 45,636評論 2 355
  • 正文 我出身青樓,卻偏偏與公主長得像到忽,于是被迫代替她去往敵國和親橄教。 傳聞我的和親對象是個殘疾皇子清寇,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,925評論 2 344

推薦閱讀更多精彩內(nèi)容