2016-10-03 100 views
0

我正在爲我正在構建的Web應用程序使用react和redux。React Redux Lifecycle Props

對於大多數情況下,每件事情都可以正常工作,但是當涉及到從父母傳遞道具時,我有一個主要問題。

我有一個連接到REDX並獲得我的商店的主要組件。我通過道具就好了:

{ this.props.children && React.cloneElement(
    this.props.children, 
    { 
     preset: this.state.preset, 
     children: this.state.babies, 
     child: this.state.currentChild, 
     name: this.state.firstName, 
    } 
)} 

所以我特殊的頁面得到這個道具。然後我將需要的道具傳遞給子組件,但是我無法訪問支架上的道具或任何其他生命週期方法的反應提供。他們似乎是唯一可用的地方是在渲染方法,並運行一個未定義的檢查後,多數民衆贊成:

let child = this.props.child; 

if(child.birthdate != undefined) { 
    // do stuff here 
} 

它看起來像我收到未定義然後兩次道具終於進來,我能夠與他們合作。

我的問題是什麼生命週期組件應該訪問格式化我的數據。我已經在文檔中運行了所有可用的方法來嘗試console.log並查看我在哪裏,但它們都返回空。我在渲染中實際獲得道具的唯一地方。

我的解釋不好,我知道,但任何幫助,將不勝感激。

-E

回答

3

componentWillReceiveProps生命週期的方法應該做的一招。您可以獲取傳入的道具並將其格式化。之後,您可以在組件狀態中設置格式化數據,並在您的渲染方法中使用它。

componentWillReceiveProps(nextProps) { 
    this.setState({ 
    formattedBirthdate: nextProps.child.birthdate 
    }); 
} 

第二種選擇是在你的構造函數中做同樣的事情。

之後,你可以輸出你的formattedBirthdate中呈現,就像這樣:

this.state.formattedBirthdate && <div>{this.state.formattedBirthdate}</div> 
+0

謝謝@Shota是工作和幫助。任何人都可以給我一個關於生命週期的好文章,以及何時這些道具是預期的?只是想了解更多並掌握這些生命週期方面。 – eip56

+0

我發現關於React生命週期方法的官方文檔中最令人困惑的部分是,它沒有清楚地說明,哪個生命週期方法與初始化有關,哪些與狀態和道具更改有關。瞭解更好看看這篇文章:http://busypeoples.github.io/post/react-component-lifecycle/,http://javascript.tutorialhorizo​​n.com/2014/09/13/execution-sequence-對的一反應組分生命週期的方法/ – Shota