Javascript 未在窗体上设置React js状态

Javascript 未在窗体上设置React js状态,javascript,reactjs,Javascript,Reactjs,首先,我还没有反应过来。 我正试图改变表单输入的状态,如下所示 constructor(props) { super(props); this.state = { pwd:'', email:'', value:'' }; this.handleEmailChange = this.handleEmailChange.bind(this); this.handleSubmit = this.handleSub

首先,我还没有反应过来。 我正试图改变表单输入的状态,如下所示

constructor(props) {
    super(props);
    this.state = {
        pwd:'',
        email:'',
        value:''
    };
    this.handleEmailChange = this.handleEmailChange.bind(this);
    this.handleSubmit = this.handleSubmit.bind(this);
    this.handlePasswordChange = this.handlePasswordChange.bind(this);
}
handlePasswordChange(event){
    //this.setState({value: event.target.value});//Works
    this.setState({pwd: event.target.pwd});// Fails 
}
我的问题是我无法设置密码字段的状态,而是收到一条警告,说
警告:一个组件正在将密码类型的受控输入更改为不受控
我的渲染方法如下

 render(){
    return(
        <div
        className="container col-md-6 col-md-offset-3"
        >
      <Form horizontal onSubmit={this.handleSubmit}>
          <FormGroup
          controlId="formHorizontalEmail">
              <Col componentClass={ControlLabel} sm={2}>
                  Email
              </Col>
              <Col sm={10}>
                  <FormControl type="email" placeholder="Email"
                               value={this.state.email} onChange={this.handleEmailChange}/>
              </Col>
          </FormGroup>
          <FormGroup
              controlId="formHorizontalPassword"
              >
                  <Col componentClass={ControlLabel} sm={2}>
                      Password
                  </Col>
                  <Col sm={10}>
                      <FormControl type="password" placeholder="Password"
                                   value={this.state.pwd} onChange={this.handlePasswordChange}
                          //if I change to value={this.state.value} it works
                      />
                  </Col>
          </FormGroup>
          <FormGroup>
              <Col smOffset={2} sm={10}>
                  <Checkbox>Remember me</Checkbox>
              </Col>
          </FormGroup>
          <FormGroup>
              <Col smOffset={2} sm={10}>
                  <Button type="submit">
                      Sign in
                  </Button>
              </Col>
          </FormGroup>
      </Form>
        </div>
    );
}
render(){
返回(
电子邮件
密码
记得我吗
登录
);
}
注意:我省略了一些我认为不重要的代码。

只需更改:

this.setState({pwd: event.target.pwd});// Fails 
用于:

事件有一个属性
target
,该属性有一个属性
value
,该属性在特定时刻具有字段值。因此,您应该将该值指定给正在定义的
pwd
state属性:)

请始终记住,您正在向setState函数发送对象。该对象的键是您正在定义的(
pwd
)。值就是你分配给那个键的东西,它可以是一个数字,一个字符串。。。或者对象属性的值(如本例中包含
event.target.value的字符串)。

只需更改:

this.setState({pwd: event.target.pwd});// Fails 
用于:

事件有一个属性
target
,该属性有一个属性
value
,该属性在特定时刻具有字段值。因此,您应该将该值指定给正在定义的
pwd
state属性:)


请始终记住,您正在向setState函数发送对象。该对象的键是您正在定义的(
pwd
)。值就是你分配给那个键的东西,它可以是一个数字,一个字符串。。。或者对象属性的值(如本例中包含
event.target.value
的字符串)。

我将向您展示我在生产中使用的一个小片段:

这是你们的州:

constructor(props) {
super(props);
this.state = {
    pwd:'',
    email:''
};
因此,现在您可能需要构建一个表单来更改这些值。我建议这样做:

<input name="pwd" onChange={(e) => this.handleChange(e)} ...>
<input name="email" onChange={(e) => this.handleChange(e)} ...>
e.target.name
获取输入字段的名称(在这种情况下为“pwd”或“email”),而
e.target.value
获取其值


当您编写更复杂的表单时,这会对您有很大帮助

我将向您展示我在生产中使用的一个小片段:

这是你们的州:

constructor(props) {
super(props);
this.state = {
    pwd:'',
    email:''
};
因此,现在您可能需要构建一个表单来更改这些值。我建议这样做:

<input name="pwd" onChange={(e) => this.handleChange(e)} ...>
<input name="email" onChange={(e) => this.handleChange(e)} ...>
e.target.name
获取输入字段的名称(在这种情况下为“pwd”或“email”),而
e.target.value
获取其值


当您编写更复杂的表单时,这会对您有很大帮助

它包含的内容是什么?@SagarJajoriya nothing,因为它不是HTML
节点的有效属性
它包含的内容是什么?@SagarJajoriya nothing,因为它不是HTML
节点的有效属性