這種情況:我應該直接操作DOM還是使用React state/props?
此組件將許多數據呈現爲列表。如果我使用狀態做出反應/道具來控制DOM樣式(類添加或修改某些屬性),反應過來的時候用戶與列表反應會一直運行render()
功能,如mouseover
,click
和等。
雖然已經作出反應虛擬DOM技術,但我認爲每次運行render()
的效率仍然很低。這些文檔不建議直接操作DOM,但我認爲它更有效。我該怎麼辦?謝謝。
這種情況:我應該直接操作DOM還是使用React state/props?
此組件將許多數據呈現爲列表。如果我使用狀態做出反應/道具來控制DOM樣式(類添加或修改某些屬性),反應過來的時候用戶與列表反應會一直運行render()
功能,如mouseover
,click
和等。
雖然已經作出反應虛擬DOM技術,但我認爲每次運行render()
的效率仍然很低。這些文檔不建議直接操作DOM,但我認爲它更有效。我該怎麼辦?謝謝。
我不會混合寫直接操作DOM的React;做,但不是兩個。
如果您已經在使用React,只需使用它即可。如果可能的話,將組件分解成儘可能小的碎片;這將有助於數字呈現。
將React重新渲染太多可能會稍微低效,但請記住,React已針對DOM操作進行了大量優化。
只要在react
重新渲染,它已經大大優化。您可能認爲render()
函數在每個小操作上運行,但不可見的事情是rerender
不會發生在整個DOM上,而只發生在已更改的部分上。
React使用virtual DOM technology
,然後它取出當前和虛擬dom之間的差異,就像字符串比較,然後只渲染差異,因此高效。
所以我建議你按照文檔,不要混合DOM操作與反應。
按照文檔中的建議(不要直接操作DOM,除非需要)。換句話說,現在要遵循最佳實踐,如果事情開始變得緩慢或效率低下,那麼就擔心_then_。 – Jack
不要擔心效率,直到遇到瓶頸。這被稱爲「不成熟的優化」,這是一個壞習慣。 React的速度足以以60fps的速度更新DOM。不要改變反應輸出的DOM。 –