? ? ? ? 前段時(shí)間遇到的一個(gè)問題,項(xiàng)目是由支付寶小程序移植過來的vue項(xiàng)目,將didUpdate更換成了updated,跑起來后發(fā)現(xiàn)updated生命周期鉤子沒有執(zhí)行。

小程序didUpdate
? ? ? ? 組件通信使用的就是普通的父子組件的傳值,當(dāng)時(shí)以為是父組件上的數(shù)據(jù)沒有更新,所以導(dǎo)致updated沒有執(zhí)行,不過后來發(fā)現(xiàn)父組件的值改變了,但是updated沒有執(zhí)行。找了下官方文檔,發(fā)現(xiàn)文檔中提到了這個(gè)坑。

vue官網(wǎng)updated
? ? ? ? updated可能并不會執(zhí)行,最好的還是使用計(jì)算屬性或者用watch監(jiān)聽數(shù)據(jù)變化

watch監(jiān)聽
? ? ? ? 以為差不多這樣就可以了,后來隨著測試的加深,一般監(jiān)聽時(shí)是不能監(jiān)聽到對象屬性值的變化的,發(fā)現(xiàn)如果監(jiān)聽的是Object類型的復(fù)雜數(shù)據(jù)類型的話,這樣寫是無法監(jiān)聽key和value的變化的,需要對Object類型進(jìn)行深層監(jiān)聽

深層監(jiān)聽
這樣的話,基本上就解決了vue組件beforeUpdate和updated生命周期鉤子不執(zhí)行的問題