Javascript 为什么我总是得到这个setstate不是一个函数?
我的问题是,我不断收到一个错误“setState不是函数” 类UserLogin扩展组件{ 状态={ 全名:“”, 密码:“”, 加载器:错, 成功:错, 失败:错误 } //使用输入值更新状态 handleChange=(e)=>{ this.setState({[e.target.name]:e.target.value}); } handleSubmit=(e)=>{ e、 预防默认值(); const fullName=this.state.fullName; const password=this.state.password; this.setState=({loader:true}) 轴心柱(`https://jsonplaceholder.typicode.com/users`,{fullName,password}) 。然后(res=>{ console.log(res.data); this.setState({loader:false,success:true}) }) .catch(错误=>{ console.log(错误) this.setState({loader:false,fail:true}) }) } render(){ 返回( 登录 登录 ); } } 导出默认用户登录;Javascript 为什么我总是得到这个setstate不是一个函数?,javascript,reactjs,Javascript,Reactjs,我的问题是,我不断收到一个错误“setState不是函数” 类UserLogin扩展组件{ 状态={ 全名:“”, 密码:“”, 加载器:错, 成功:错, 失败:错误 } //使用输入值更新状态 handleChange=(e)=>{ this.setState({[e.target.name]:e.target.value}); } handleSubmit=(e)=>{ e、 预防默认值(); const fullName=this.state.fullName; const passwor
我试图解决这个问题的方法是根据这里类似的答案绑定东西,或者添加一个构造函数,但是仍然只有输入值在更新,状态中的fail、success和loader仍然是false。看起来像
this.setState=({loader:true})
应该是this.setState({loader:true})
,您正在重新分配它,使它不再是函数。这是否回答了您的问题?
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;