[英]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.