getInitialState上的属性未定义

时间:2015-10-24 01:58:41

标签: reactjs

在这里反应noob,尝试为我的复选框控件设置初始值。我设置了属性,并尝试使用getInitialState将状态设置为属性值。问题是,道具似乎在getInitialState中未定义。我已经简化并创建了一个jsbin来显示问题。https://jsbin.com/cujeveh/edit?html,js,console,output

var testcontrol = React.createClass({
    getInitialState: function () {
        return { testval: this.props.testval };
    },
    render: function() {
        return (
        <input type="checkbox" checked={this.state.testval?"checked":""}}/>
        );
    }
});
React.render(
    <Container lblOn="yup" lblOff="nope"
       buttonText="saveit" testval="1" />, document.body);

同样在jsbin中,尝试了具有相同结果的componentDidMount方法。如果我更新getInitialState以用硬编码值替换prop,一切正常。我确实阅读了React docs here并确实看到了反模式语句,但我只是试图设置我理解为正常的初始状态。

1 个答案:

答案 0 :(得分:0)

在您的示例中,您在testval组件上设置了<Container> prop,但在<Chkbox1>组件上没有,这是检查它的组件。可能是一个轻微的疏忽。你只需要改变:

<Chkbox1 ref="box1" lblOn={this.props.lblOn} 
         lblOff={this.props.lblOff} />

<Chkbox1 ref="box1" lblOn={this.props.lblOn} 
         lblOff={this.props.lblOff} testval={this.props.testval}/>