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节点的有效属性