【发布时间】:2020-06-12 03:55:19
【问题描述】:
我正在从 AntD 迁移到 MaterialUI,并且无法弄清楚如何在不重新加载整个页面的情况下轻松实现表单验证和表单提交。
As an example,点击“登录”后,整个页面会重新加载,这对于 SPA 应用程序来说不是一个好主意。
我可以通过将句柄函数从元素移动到元素的 onClick 函数并从按钮中删除 type="submit" 来绕过它,以免重新加载整个页面。这有效,但它删除了验证,并删除了用户单击“Enter”提交表单的能力。
知道如何实现这一目标吗?以下是我目前所拥有的,但没有表单验证并且无法点击“输入”提交表单:
return (
<Container component="main" maxWidth="xs">
<CssBaseline/>
<div className={classes.paper}>
<Avatar className={classes.avatar}>
<LockOutlinedIcon/>
</Avatar>
<Typography component="h1" variant="h5">
Sign in
</Typography>
<form className={classes.form}>
<TextField
variant="outlined"
margin="normal"
required
fullWidth
id="email"
label="Email Address"
name="email"
autoComplete="email"
autoFocus
errorMessages={['this field is required', 'email is not valid']}
onInput={e => setEmail(e.target.value)}
/>
<TextField
variant="outlined"
margin="normal"
required
fullWidth
name="password"
label="Password"
type="password"
id="password"
autoComplete="current-password"
onInput={e => setPassword(e.target.value)}
/>
<FormControlLabel
control={<Checkbox value="remember" color="primary"/>}
label="Remember me"
/>
<Button
fullWidth
variant="contained"
color="primary"
className={classes.submit}
onClick={onFinish}
>
Sign In
</Button>
<Grid container>
<Grid item xs>
<Link to={"/forgotpassword1"} variant="body2">
Forgot password?
</Link>
</Grid>
<Grid item>
<Link to={"/register"} variant="body2">
{"Don't have an account? Sign Up"}
</Link>
</Grid>
</Grid>
</form>
</div>
</Container>
);
【问题讨论】:
标签: javascript reactjs forms material-ui material-design