2016-02-20 44 views
0

我正在將jQuery Flotchart組件打包爲React之一,每當組件屬性發生更改時,我都需要調用plot方法。React reconciliation - 道具diff

我最終得到的是shouldComponentUpdate掛鉤實施,它比較新的道具和舊道具。

但是React自身將新組件道具與舊組件道具作爲對賬過程的一部分進行比較,因此React已經應該知道某些道具是否改變了。這意味着如果我在shouldComponentUpdate中對道具進行淺層比較,我會複製已經在React中構建的功能,對嗎?如果是這樣,我如何獲得有關屬性是否從React更改的信息,而不需要在shouldComponentUpdate中複製它?

回答

0

陣營沒有做道具的任何淺層比較的屬性,它提供組件生命週期掛鉤,根據道具OT狀態或您的定製邏輯裏面添加shouldComponentUpdate你的邏輯。但是,如果你的組件是pureComponent根據道具或狀態,你的反應會做淺層比較。

每次道具/狀態改變時,在調用渲染函數之前都會調用hook方法的調用對。

componentWillReceiveProps()---> shouldComponentUpdate()---> componentWillUpdate()--->渲染()---> componentDidUpdate()

0

您正在尋找的功能是componentWillReceiveProps。根據reactjs documentation,該方法將接收下一組組件屬性nextProps

您可以比較喜歡

if (nextProps,myProperty == this.props.myProperty) {//doSomething}