在我的react js应用程序中,我似乎无法使用状态值作为子组件的道具。
在父组件constructor
中,应用程序具有名为selectedWarehouseID
的空状态。
此状态(selectedWarehouseID
)应使用componentWillMount()
方法中的某些信息进行更新。
现在,在父组件的render
方法中,我嵌入了另一个具有此状态的子组件作为道具。
<ItemChooser
productsByWarehouse = { this.state.selectedWarehouseID }
/>
现在问题是,在子组件中,this.props.productsByWarehouse
的值始终为null
。我找到了一个很好的explanation为什么会发生这种情况,但是如何等待父类componentWillMount()
中更新的数据来访问子组件道具中传递的状态的更新值?
答案 0 :(得分:1)
可能的解决方案是:
1。您将props
值存储在子组件的state
中,因此,只要props
值发生任何更改,就更新子组件的状态(父母的状况)。对于那个使用componentWillReceiveProps
生命周期方法。
<强> componentWillReceiveProps(): 强>
在安装的组件接收新道具之前调用。如果你需要 更新状态以响应prop更改(例如,重置 你可以比较this.props和nextProps并执行状态 在此方法中使用this.setState()进行转换。
像这样:
componentWillReceiveProps(newProps){
this.setState({
value: newProps.productsByWarehouse
});
}
注意:将值替换为存储值的实际键。
2。不要将props
值存储在子组件的状态中,直接使用this.props.productsByWarehouse
,每当您更改父状态值时,子将自动获取props
中的更新值。