1

我想知道如果我的代碼將更具性能,如果我將我的大型組件分成許多非常小的組件,以便應用程序一次只呈現較小的DOM部分。如果組件的只有一部分發生更改,React是否呈現整個組件?

但我覺得React可能已經只能渲染改變的應用程序部分,無論組件是巨大的還是微小的。所以如果一個巨大的組件的一小部分被改變了,React將只重新渲染組件的那個小部分,而不是整個組件。

我在第二段中的斷言是否正確,或者是否可以通過將大型組件分解爲許多小組件來獲得更好的性能?我在這個問題中包括ReactJS和React Native。我認爲他們在這方面是一樣的,但如果他們不同,我想知道。

回答

1

我一直把自己沉浸在React中,所以我希望我的理解是有效的。 React使用虛擬DOM來優化實際DOM的渲染。基本上區分兩者並且僅用差異修補DOM。所以我相信你的說法是正確的。

關於打破你的大組件,我認爲這一切都取決於狀態和你的組件看起來像什麼。這些是我會問自己的問題:是否有多個UI單元可以獨立存在並被封裝到一個組件中?我的組件實際上受狀態更改影響多少?

我的理解是,組件不會重新渲染,除非有狀態更改。 React提供了一個生命週期鉤子shouldComponentUpdate,它不影響它的子組件,以便開發人員可以控制組件的渲染狀態變化。因此,如果有許多JSX元素沒有更改,最好將解壓縮到受狀態變化影響的元素。我相信我們可以通過不更改具有虛擬DOM更新的項目來獲得性能。

在寫這個答案時,我GOOGLE了一下,發現這個博客條目:React is Slow, React is Fast: Optimizing React Apps in Practice。我沒有使用那裏提到的工具,但我很可能很快就會嘗試它們。我相信這篇文章可以闡明你的問題的第二部分。

相關問題