dynamicChildren
:標(biāo)簽內(nèi)部動態(tài)子節(jié)點(diǎn)
dynamicProps
標(biāo)記的動態(tài)屬性Children可能是文本可能是數(shù)組列肢,相比vue2少了text
type vue2中是字符串, vue3中可能是對象
patch源碼太多了這里就不去粘貼了 想看的小伙伴可以去GitHub或者自己下載去看對應(yīng)的文件即可
初始化過程為mount => render => patch 然后根據(jù) shapFlags去做遞歸操作
初始化patch會hostCreatElement
// 1. sync from start 找開頭
// (a b) c
// (a b) d e
// 2. sync from end 找結(jié)尾
// a (b c)
// d e (b c)
// 通用序列增加
// 3. common sequence + mount 創(chuàng)建
// (a b)
// (a b) c
// i = 2, e1 = 1, e2 = 2
// (a b)
// c (a b)
// i = 0, e1 = -1, e2 = 0
// 4. common sequence + unmount 刪除
// (a b) c
// (a b)
// i = 2, e1 = 2, e2 = 1
// a (b c)
// (b c)
// i = 0, e1 = 0, e2 = -1
// 最長遞增子序列
// 5. unknown sequence
// [i ... e1 + 1]: a b [c d e] f g
// [i ... e2 + 1]: a b [e d c h] f g
// i = 2, e1 = 4, e2 = 5
1. 新的節(jié)點(diǎn)去老的里邊找挣惰,是否存在
2. 找到做更新塘安,沒找到 創(chuàng)建
3. 移動和創(chuàng)建 // 最長遞增子序列