如果没有 this.updateEmail.bind(this) 上的 bind.(this),输入字段值会发生变化,但我收到错误消息,说无法设置 undefind 的 this.setState。所以我添加了 .bind(this) 但它根本不起作用..有点困惑
import React, { Component } from 'react';
import Request from 'superagent';
class App extends Component {
constructor(){
super()
this.state = {
email: 'asdf',
password: ''
}
}
updateEmail(e){
this.setState={
email: e.target.value
}
}
createUser(e){
var query = 'star';
e.preventDefault()
console.log(this.state.email)
var url = `http://www.omdbapi.com?s=${query}&y=&r=json&plot=short`;
Request.get(url).then((response) => {
console.log(response)
this.setState({
movies: response.body.Search,
total: response.body.totalResults
});
});
}
render() {
return (
<div className="App">
<div className="App-header">
<form onSubmit={this.createUser.bind(this)}>
<input type="text"
name="email"
onChange={this.updateEmail.bind(this)}
value={this.state.email}
placeholder="email"/>
<br/>
<input type="text"
name="password"
value={this.state.password}
onChange={this.updatePassword}
placeholder="password"/>
<br/>
<input type="submit" value="submit"/>
</form>
</div>
</div>
);
}
}
export default App;
最佳答案
setState 是一个函数,您应该这样调用它:
this.setState({ foo: 'bar' });
关于javascript - React 中的输入字段没有变化(受控输入),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41477067/