作爲React組件生命週期一部分的shouldComponentUpdate()
方法的自定義實現不是必需的。React組件中的「shouldComponentUpdate」生命週期方法的默認實現是什麼
我知道這是一個布爾函數,確定是否render()
將根據在組件props
和state
變化被調用,並且有mixins
像PureRenderMixin它實現了shouldComponentUpdate()
如果沒有定製的實現,也不提供混入。什麼是默認實現和行爲?
作爲React組件生命週期一部分的shouldComponentUpdate()
方法的自定義實現不是必需的。React組件中的「shouldComponentUpdate」生命週期方法的默認實現是什麼
我知道這是一個布爾函數,確定是否render()
將根據在組件props
和state
變化被調用,並且有mixins
像PureRenderMixin它實現了shouldComponentUpdate()
如果沒有定製的實現,也不提供混入。什麼是默認實現和行爲?
作爲陣營V0.13和v0.14的默認實現等於null
和按照這個邏輯:
var shouldUpdate =
this._pendingForceUpdate ||
!inst.shouldComponentUpdate ||
inst.shouldComponentUpdate(nextProps, nextState, nextContext);
成分被更新的每個渲染週期(因爲!inst.shouldComponentUpdate
評估爲true
)。
你碰巧知道這是否仍然有效?我在問,因爲瀏覽[這個更近期的博客](http://jamesknelson.com/should-i-use-shouldcomponentupdate/)表明,默認實現對新舊道具執行「deepEquals」。 – bluenote10
@ bluenote10檢查它是如何在最新的穩定版本中實現的:https://github.com/facebook/react/blob/v15.6.1/src/renderers/shared/stack/reconciler/ReactCompositeComponent.js#L838如果沒有提供'shouldComponentUpdate' - 組件始終更新,不提供默認實現。 (除非它是一個純粹的功能組件) – zerkms
鑑於文檔React Docs默認爲true
:
shouldComponentUpdate()正在接收新道具或狀態時,呈現之前被調用。默認爲true。
據我所知,組件呈現,如果你沒有實現這個功能。該功能可讓您針對特殊情況微調渲染機制。 – davestevens