簡體   English   中英

ShouldComponentUpdate和虛擬DOM反應

[英]ShouldComponentUpdate and Virtual DOM react

當使用setState()調用更新組件時,即使shouldComponentUpdate()返回false時, shouldComponentUpdate()如何為組件創建一個新的虛擬DOM?

React是否會為所有組件再次創建虛擬DOM,即使未調用setState()組件也是如此? 我的意思是假設setState()在子組件上被調用,父組件也會對新的虛擬DOM做出反應嗎?

即使在shouldComponentUpdate返回false時,反應也會創建虛擬dom嗎?

不,不是的。 如果shouldComponentUpdate返回false,則不會對該特定組件及其子組件進行重新渲染。

反應會再次為所有組件創建虛擬dom,即使未調用setstate的組件也是如此。

它將為狀態或道具已更改的那些組件(及其子組件)創建。 但這並不一定意味着會發生實際的DOM更新。 同樣如上所述,如果這些組件中的任何一個從shouldComponentUpdate返回false,則停止對該組件及其子樹的重新渲染。

我的意思是假設在子組件上調用了setstate,並且對父組件也做出了新的virtual d反應

不會。父母會導致孩子重新渲染,而不是相反。 React僅重新渲染該子樹。 不是它的根源。

也就是說,重新渲染(創建虛擬DOM)並不總是意味着DOM發生了變化。 如果子樹的先前虛擬DOM和新虛擬DOM相同,則實際DOM保持不變。

React在他們的文檔中使用一個非常清晰簡潔的示例對此進行了解釋。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM