在下面的代码中,我无法使用 this.setState({name: this.nameRef.current.value})。有人可以告诉为什么会这样吗?一旦我在 ref 的当前值中有一些东西,为什么我不能用它来更新组件的当前状态?另外,这是错误的做法吗?但是,如果它不起作用也没关系。
class App extends React.Component {
constructor(){
console.log('constructor');
super();
this.state = {name : '', password: ''}
this.nameRef = React.createRef()
this.pwdRef = React.createRef()
}
handleLogin = (val) =>{
val.preventDefault();
this.setState({name: this.nameRef.current.value}) //Not working
alert("Welcome"+this.nameRef.current.value);
console.log(this.state.name); //Outputs empty string
}
render(){
return(
<React.Fragment>
<form>
<div className={"form-group"}>
<label>Username: </label>
<input style={{width: '60%', display: 'inline'}} name="name" type="text" className={"form-control"} placeholder="Enter name" ref={this.nameRef}/>
</div>
<div className={"form-group"}>
<label>Password: </label>
<input style={{width: '60%', display: 'inline'}} type="text" name="pass" className={"form-control"} placeholder="Enter password" ref={this.pwdRef}/>
</div>
<button type="submit" className={"btn btn-primary"} onClick={this.handleLogin}> Login </button>
</form>
</React.Fragment>
)
}
}
export default App;
提前致谢!