在子Component中,React js this.props.variable未定义

时间:2016-01-30 18:23:26

标签: reactjs

当我调用子组件时,我设置了一个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
        });
    }
},

...

2 个答案:

答案 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