2017-02-10 62 views
1

如果某個組件由於prop更改而需要每秒渲染幾次,該組件是否應該擴展React.PureComponent?React.PureComponent應該用於頻繁更新的組件嗎?

該組件沒有子組件,但它本身是深嵌的......所以道具正在穿過其他幾個組件。

一般來說,決定是否應使用React.PureComponent時,需要考慮哪些關鍵事項。在哪種情況下使用不好?

回答

0

是的,這聽起來像是PureComponent的一個很好的例子,因爲您的組件不必要地被相同的道具經常重新渲染。

從React.Component擴展的子組件每次調用render時都會調用render。如果相反,子組件是從PureComponent擴展的,那麼當母公司通過不支持以前通過的道具的道具時,它將只會調用render

它通常是安全的,只要使用PureComponent作爲

  • 您的組件及其子不依賴context更新
  • 您的組件不具有直接由突變對象或數組的道具父母(shallowEqual不會檢測到這些變化)
+0

謝謝,但我的意思是道具有不同的值每秒幾次....如果渲染功能非常簡單,是否值得PureComponent做到這一點檢查這麼多每秒一次。此外,頁面上有數百個這些組件都隨着該頻率而變化。 – c0deNinja

+0

'shallowEqual'具有非常小的性能成本,尤其是與'render'相比,它必須創建新元素並觸發陰影DOM比較。如果你所有的組件實例在100%的時間內都獲得了不同的道具,那麼確保PureComponent有一個小的性能打擊。但除此之外,這可能是淨收益。 –