2017-09-14 65 views
1

我有一個商店對象(React-Redux應用程序使用連接與我的JAVA API交互)稱爲參數。關於道具(商店)更改

這個對象在另一個組件更新,當我更新的輸入框中打勾等...

在我的新元件,我有一個「另存爲模板」按鈕,完成某些處理後發送該對象爲JSON我API。

我想現在使用任何奇數函數在我的新組件中CATCH更改爲此對象(參數)。

爲了讓我可以對其執行一系列「if」測試,請查看是否有某些輸入丟失,並相應地隱藏或灰掉「另存爲模板」按鈕。

這可能嗎?

componentDidMount() { 

} 

componentWillReceiveProps() { 

} 

不似乎有很大幫助。

+1

您可以發佈您的代碼嗎? –

+1

從它的聲音中,你可以使用'render()'函數完成這一切。 – Aaron

+1

您可以驗證渲染方法中的對象,並在驗證失敗時將該按鈕渲染爲暗點。無需爲此使用生命週期方法。 – trixn

回答

2

是的,這是我不得不使用幾次的模式,我用lodash.isEqual來處理它。

import { isEqual as _isEqual } from "lodash" 

假設你有一個參數對象在您存儲和你看它在mapStateToProps您的組件,例如(或其他但是你要訪問它):

const mapStateToProps = (state) => ({ 
    parameters: state.someApp.parameters, 
}); 

你然後可以檢查您的組件是否有任何更改將收到您的代碼:

componentWillReceiveProps(nextProps) { 
    if(!_isEqual(this.props.parameters, nextProps.parameters)) { 
     this.props.sendSomeRequestWithParameters(nextProps.parameters) 
    } 
} 
+0

這非常酷,謝謝。在這種情況下,我可以簡單地聲明兩個布爾值(實際上有兩個參數對象),在我的渲染和返回之間,並在其中存儲對我的「if」測試電池的答案。一旦在我的按鈕的渲染內,我可以根據if(booleanOne || booleanTWO)決定我決定顯示哪兩組按鈕。明白了嗎? – tatsu