TextField onChange как?
Была у меня форма, решил её заменить на компоненты MaterialUi
В обычной форме у меня были инпуты с onChange который передавал состояние,вопрос как реализовать это в TextField
<form onSubmit={onSubmit}>
<input type={"email"} onChange={(e)=>this.setState({...this.state, email: e.target.value})}/>
<input type={"password"} onChange={(e)=>this.setState({...this.state, password: e.target.value})}/>
<button>Submit</button>
</form>
Компонент с MaterialUi
const SignInComponent = () => {
const classes = useStyles();
const signIn = useSignIn()
const [formData, setFormData] = React.useState({username: '', password: ''})
const onSubmit = (e) => {
e.preventDefault()
axios.post('https://elepsio.herokuapp.com/auth/login', formData)
.then((res)=>{
if(res.status === 200){
if(signIn({token: res.data.token,
expiresIn:res.data.expiresIn,
tokenType: "Bearer",
authState: res.data.authUserState})){
// Redirect or do-something
}else {
console.log("Error")
}
}
})
}
return (
<Container component="main" maxWidth="xs">
<CssBaseline />
<div className={classes.paper}>
<Avatar className={classes.avatar}>
<LockOutlinedIcon />
</Avatar>
<Typography component="h1" variant="h5">
Войти в систему
</Typography>
<form className={classes.form} onSubmit={onSubmit}>
<TextField
variant="outlined"
margin="normal"
required
fullWidth
id="username"
label="Имя"
name="username"
autoComplete="username"
autoFocus
/>
<TextField
variant="outlined"
margin="normal"
required
fullWidth
name="password"
label="Password"
type="password"
id="password"
autoComplete="current-password"
/>
<Button
type="submit"
fullWidth
variant="contained"
color="primary"
className={classes.submit}
>
Войти
</Button>
</form>
</div>
</Container>
)
}
export default SignInComponent;
Ответы (1 шт):
Автор решения: Material
→ Ссылка
<TextField
onChange = {(e)=>setFormData({...formData, password: e.target.value})}
variant="outlined"
margin="normal"
required
fullWidth
name="password"
label="Пароль"
type="password"
id="password"
autoComplete="current-password"
/>