我的问题是我不断收到错误消息“ setState不是函数”
class UserLogin extends Component {
state = {
fullName: '',
password: '',
loader: false,
success: false,
fail: false
}
// update state with input value
handleChange = (e) => {
this.setState({ [e.target.name]: e.target.value });
}
handleSubmit = (e) => {
e.preventDefault();
const fullName = this.state.fullName;
const password = this.state.password;
this.setState = ({ loader: true })
axios.post(`https://jsonplaceholder.typicode.com/users`, { fullName, password })
.then(res => {
console.log(res.data);
this.setState({ loader: false, success: true })
})
.catch(error => {
console.log(error)
this.setState({ loader: false, fail: true })
})
}
render() {
return (
<div>
<div>
<h1>Sign in</h1>
<input
name="fullName"
onChange={this.handleChange}
value={this.state.fullName}
/>
<input
name="password"
onChange={this.handleChange}
value={this.state.password}
/>
<button onClick={this.handleSubmit}>Login</button>
</div>
</div>
);
}
}
export default UserLogin;
我试图解决此问题的方法是尝试根据此处类似的答案绑定事物,或添加构造函数,但仍然仅更新输入值,并且状态中的fail,success和loader仍然为false。
答案 0 :(得分:1)
看起来this.setState = ({ loader: true })
应该是this.setState({ loader: true })
,您正在重新分配它,因此它不再是一个函数。