当我调用子组件时,我设置了一个minDate变量,这是一个datePicker(没关系)。在孩子我得到this.props.minDate = undefined。
我错过了什么吗?
这是我的代码:
父组件
getInitialState() {
return {
minDate: '',
startDate: moment().subtract(30, 'days').format('YYYY-MM-DD'),
endDate: moment().format('YYYY-MM-DD')
};
},
componentWillMount() {
...
this.setState({minDate: response});
...
},
render() {
return (
<DatePicker minDate={this.state.minDate} label="Start Date:"/>
);
}
子组件
getDefaultProps() {
return {
label: 'Date:',
minDate: '',
};
},
componentDidMount() {
this.datePicker = $('#'+this.props.id);
if (this.datePicker) {
this.datePicker.datepicker({
minDate: this.props.minDate
});
}
},
...
答案 0 :(得分:1)
问题是您在实例化jQuery日期选择器时使用了undefined
minDate
值。
以下是minDate
的价值:
父组件将minDate
的值设置为空字符串,因为它是在getInitialState
方法中定义的。
父组件将minDate
的值设置为response
变量的值(可能是undefined
,但我无法确定是否存在有关response
的价值的其他信息。
子组件取值this.props.minDate
。此时,this.props.minDate
的值为空字符串或undefined
。
最后,jQuery日期选择器在this.props.minDate
方法中被赋予componentDidMount
的值。 jQuery日期选择器仅实例化一次,因此如果this.props.minDate
的值随时间变化,则不会被jQuery日期选择器重新评估。
答案 1 :(得分:0)
Child组件在名为-i 0
的状态中没有对象,但是父组件有。{/ p>
如果您通过道具对象在子组件中访问它,它将起作用,除非您父项minDate
中的响应当然未定义。
此外,如果您的componentWillMount
属性应该是Date对象,我默认会minDate
返回相同的类型。
defaultProps