2016-10-03 139 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