前言
上個月發(fā)表了一篇 React源碼學(xué)習(xí)——ReactClass,但是后來我發(fā)現(xiàn),大家對這種大量貼代碼分析源碼的形式并不感冒。講道理,我自己看著也煩,還不如自己直接去翻源碼來得痛快。吸取了上一次的教訓(xùn),這次我決定:理性貼代碼!翻閱源代碼的工作還是留給各位小伙伴自己去做比較好。本來這次想準(zhǔn)備說一說我們平時一直提到的React Virture DOM,但這可能又會造成無限貼源碼的后果,因為virture dom在React中主要就是一個對象,在ReactElement中定義的,感興趣的同學(xué)去源碼中搜索一下createElement方法,就能看到virture dom是啥東西了。對其本身是沒啥好說的,需要分析的應(yīng)該是其在組件掛載和更新時的應(yīng)用,因此對于ReactElement本身就不單獨拿出來講了,大家感興趣就去翻閱一下源碼吧。
進入正題
這次主要是要分析一下React中常見的setState方法,熟悉React的小伙伴應(yīng)該都知道,該方法通常用于改變組件狀態(tài)并用新的state去更新組件。但是,這個方法在很多地方的表現(xiàn)總是與我們的預(yù)期不符,先來看幾個案例。
案例一
1 class Root ext