2016-03-17 24 views
2

React在其高級性能部分中討論了關於shouldComponentUpdate函數。React Redux:是不是應該ComponentComponent與Angular觀察者類似

它允許我們在返回false時防止組件渲染。

使用redux,其中容器組件訂閱商店更新,我們通常定義shouldComponentUpdate以避免不必要時重新渲染。

所以我的查詢不是什麼角度觀察者自動做同樣的事情。摘要循環遍歷所有觀察者並比較表達式。

+0

我不同意它是一樣的,我可以寫幾行關於爲什麼。但即使它是相同的,你爲什麼要問?如果它們是相似的,那麼這是否會導致您得出其他結論? –

+0

如果它們相同,則多個觀察者負責減慢角度應用程序。將使用多個shoulComponentUpdate會有任何性能影響。 – user1948585

+0

那麼它在反應中的作用並不一樣,我建議你閱讀什麼會導致渲染反應和組件生命週期,並且你會更好地理解它爲什麼不一樣。 –

回答

1

關於Redux(或任何通量類實現),兩者絕對不是平等的。

首先,$ digest循環應用於雙向數據綁定,而在React中,這通常是不被接受的。相反,通常單向數據流也被稱爲通量範例(Redux,大部分遵循這種範例)。其次,當你使用Redux時,你的狀態在商店中的變化變成不變的。因此,值不需要「髒檢查」,因爲每當一個值改變「整體」值的變化(其參考)。因此,React只需通過引用進行比較,並且不必實際比較參考點的任何內容。

此外,當使用Redux與react-redux時,您可能不必實現shouldComponentUpdate。 react-redux是否使用「淺比較」來檢查您的參考(請參閱https://facebook.github.io/react/docs/shallow-compare.html)。如果你發現你仍然有不必要的重新渲染,它可能與將狀態映射到道具時對狀態進行突變有關。要解決這個問題,你可以使用類似reselect的東西。

+0

感謝您的詳細解釋。 – user1948585