前言

上個(gè)月發(fā)表了一篇 React源碼學(xué)習(xí)——ReactClass,但是后來(lái)我發(fā)現(xiàn),大家對(duì)這種大量貼代碼分析源碼的形式并不感冒。講道理,我自己看著也煩,還不如自己直接去翻源碼來(lái)得痛快。吸取了上一次的教訓(xùn),這次我決定:理性貼代碼!翻閱源代碼的工作還是留給各位小伙伴自己去做比較好。本來(lái)這次想準(zhǔn)備說(shuō)一說(shuō)我們平時(shí)一直提到的React Virture DOM,但這可能又會(huì)造成無(wú)限貼源碼的后果,因?yàn)関irture dom在React中主要就是一個(gè)對(duì)象,在ReactElement中定義的,感興趣的同學(xué)去源碼中搜索一下createElement方法,就能看到virture dom是啥東西了。對(duì)其本身是沒(méi)啥好說(shuō)的,需要分析的應(yīng)該是其在組件掛載和更新時(shí)的應(yīng)用,因此對(duì)于ReactElement本身就不單獨(dú)拿出來(lái)講了,大家感興趣就去翻閱一下源碼吧。

進(jìn)入正題

這次主要是要分析一下React中常見(jiàn)的setState方法,熟悉React的小伙伴應(yīng)該都知道,該方法通常用于改變組件狀態(tài)并用新的state去更新組件。但是,這個(gè)方法在很多地方的表現(xiàn)總是與我們的預(yù)期不符,先來(lái)看幾個(gè)案例。

案例一

 

移動(dòng)開(kāi)發(fā)培訓(xùn),Android培訓(xùn),安卓培訓(xùn),手機(jī)開(kāi)發(fā)培訓(xùn),手機(jī)維修培訓(xùn),手機(jī)軟件培訓(xùn)

 1 class Root ext