難度級(jí)別:中高級(jí)及以上 ??????????????????????????????提問(wèn)概率:70%?
在React項(xiàng)目中,使用setState可以更新?tīng)顟B(tài)數(shù)據(jù),而不能直接使用為this.state賦值的方式。而為了避免重復(fù)更新state數(shù)據(jù),React首先將state添加到狀態(tài)隊(duì)列中,此時(shí)我們可以通過(guò)shouldComponentUpdate這個(gè)鉤子函數(shù)在一定程度上決定是否需要更新組件。所以是不能在shouldComponentUpdate鉤子函數(shù)內(nèi)使用setState來(lái)更新state的,這樣程序會(huì)繼續(xù)調(diào)用updateComponent方法,而updateComponent又繼續(xù)調(diào)用shouldComponentUpdate,從而導(dǎo)致?tīng)顟B(tài)更新死循環(huán),這一點(diǎn)開(kāi)發(fā)者需要注意。
很多人認(rèn)為setState是異步的,這本沒(méi)有錯(cuò)。從開(kāi)發(fā)角度來(lái)說(shuō),如果上一行代碼做了賦值操作,下一行代碼未能及時(shí)拿到賦值結(jié)果,其實(shí)都可以算作是異步的,因?yàn)榇a執(zhí)行本身也是需要時(shí)間的,哪怕只是一行簡(jiǎn)單的Javascript代碼。但考慮到這道面試題,求職者就需要從隊(duì)列以及事件角度來(lái)回答了。文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-845652.html
更新state數(shù)據(jù)的過(guò)程中,有一個(gè)非常重要的變量isBatching文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-845652.html
到了這里,關(guān)于React - 請(qǐng)你說(shuō)一說(shuō)setState是同步的還是異步的的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!