2017-05-25 141 views
0

我想设置一个项的状态,然后使用新的状态,这是传递给我的组件的道具,但它不会出现要及时设置状态返回null阵营本地国有

constructor (props) { 
    super(props) 
    this.cartFirebase = firebaseApp.database().ref('carts') 
    this.cartFirebase.child(DeviceInfo.getUniqueID() + '/items').push({ 
     item: this.props.data.name, 
     qty: 1 
    }).then((snap) => { 
     this.state = { 
     cartKey: snap.key 
     } 
    }) 
    } 

组件

<AddToCartRow item={this.props.data.sizes} option='size' key={this.state.cartKey}/> 

回答

1

这是因为在渲染AddToCartRow的时间,this.state.cartKeynull

您正在设置cartKey从Promise .then(..)尚未实现。

您的render()实际上是在您的constructor已填充之前调用。

您可以编写以下逻辑以仅在this.state.cartKey的计算结果为true时渲染组件,并且正如我们所知,null的计算结果为false

{this.state.cartKey && <AddToCartRow item={this.props.data.sizes} option='size' key={this.state.cartKey}/>}