2017-01-03 31 views
-1

這種情況:我應該直接操作DOM還是使用React state/props?

此組件將許多數據呈現爲列表。如果我使用狀態做出反應/道具來控制DOM樣式(類添加或修改某些屬性),反應過來的時候用戶與列表反應會一直運行render()功能,如mouseoverclick和等。

雖然已經作出反應虛擬DOM技術,但我認爲每次運行render()的效率仍然很低。這些文檔不建議直接操作DOM,但我認爲它更有效。我該怎麼辦?謝謝。

+2

按照文檔中的建議(不要直接操作DOM,除非需要)。換句話說,現在要遵循最佳實踐,如果事情開始變得緩慢或效率低下,那麼就擔心_then_。 – Jack

+0

不要擔心效率,直到遇到瓶頸。這被稱爲「不成熟的優化」,這是一個壞習慣。 React的速度足以以60fps的速度更新DOM。不要改變反應輸出的DOM。 –

回答

0

我不會混合寫直接操作DOM的React;做,但不是兩個。

如果您已經在使用React,只需使用它即可。如果可能的話,將組件分解成儘可能小的碎片;這將有助於數字呈現。

將React重新渲染太多可能會稍微低效,但請記住,React已針對DOM操作進行了大量優化。

0

只要在react重新渲染,它已經大大優化。您可能認爲render()函數在每個小操作上運行,但不可見的事情是rerender不會發生在整個DOM上,而只發生在已更改的部分上。

React使用virtual DOM technology,然後它取出當前和虛擬dom之間的差異,就像字符串比較,然後只渲染差異,因此高效。

所以我建議你按照文檔,不要混合DOM操作與反應。

相關問題