2015-11-01 73 views
4

作爲React組件生命週期一部分的shouldComponentUpdate()方法的自定義實現不是必需的。React組件中的「shouldComponentUpdate」生命週期方法的默認實現是什麼

我知道這是一個布爾函數,確定是否render()將根據在組件propsstate變化被調用,並且有mixinsPureRenderMixin它實現了shouldComponentUpdate()

如果沒有定製的實現,也不提供混入。什麼是默認實現和行爲?

+0

據我所知,組件呈現,如果你沒有實現這個功能。該功能可讓您針對特殊情況微調渲染機制。 – davestevens

回答

5

作爲陣營V0.13和v0.14的默認實現等於null和按照這個邏輯:

var shouldUpdate = 
     this._pendingForceUpdate || 
     !inst.shouldComponentUpdate || 
     inst.shouldComponentUpdate(nextProps, nextState, nextContext); 

成分被更新的每個渲染週期(因爲!inst.shouldComponentUpdate評估爲true)。

+0

你碰巧知道這是否仍然有效?我在問,因爲瀏覽[這個更近期的博客](http://jamesknelson.com/should-i-use-shouldcomponentupdate/)表明,默認實現對新舊道具執行「deepEquals」。 – bluenote10

+1

@ bluenote10檢查它是如何在最新的穩定版本中實現的:https://github.com/facebook/react/blob/v15.6.1/src/renderers/shared/stack/reconciler/ReactCompositeComponent.js#L838如果沒有提供'shouldComponentUpdate' - 組件始終更新,不提供默認實現。 (除非它是一個純粹的功能組件) – zerkms

0

鑑於文檔React Docs默認爲true

shouldComponentUpdate()正在接收新道具或狀態時,呈現之前被調用。默認爲true。

相關問題