![](/img/trans.png)
[英]React FormIk reset values to empty values handleReset function
[英]Formik values empty
我有以下 Formik 表格
<Formik
initialValues={{
email: '',
password: ''
}}
onSubmit={(values, { setSubmitting }) => {
console.log(JSON.stringify(values));
setSubmitting(true);
fetch('/login', {
method: 'POST',
body: JSON.stringify(values),
headers: {
'Content-Type': 'application/json'
}
})
.then(res => res.json())
.then(response => {
console.log(response);
setSubmitting(false);
if (!response.success) return showAlert();
login(response.user);
history.push('/');
})
.catch(console.log);
}}
>
{({ isSubmitting }) => (
<Form className={classes.form}>
<TextField
required
variant="outlined"
margin="normal"
fullWidth
label="Email"
name="email"
autoFocus
/>
<TextField
required
variant="outlined"
margin="normal"
fullWidth
name="password"
label="Wachtwoord"
type="password"
/>
<Button
type="submit"
fullWidth
variant="contained"
color="primary"
className={classes.submit}
disabled={isSubmitting}
>
Log in
</Button>
<Grid container>
<Grid item xs>
<Link href="/register" variant="body2">
{'Nog geen account? Registreer nu!'}
</Link>
</Grid>
</Grid>
</Form>
)}
</Formik>
出于某种原因, onSubmit
中的值是空的,如何将其设置为表单内的值? 这个表单和我开始工作的另一个表单之间的唯一区别是这个表单没有验证模式,但我无法想象这是必需的
TextField
未连接到Formik
。 当TextField
的值改变时, Formik
不会改变,你需要Field
( import { Field } from 'formik'
) 来渲染TextField
。
email
示例
<Field
name="email"
render={({ field /* _form */ }) => (
<TextField
required
variant="outlined"
margin="normal"
fullWidth
label="Email"
autoFocus
{...field}
/>
)}
/>
如果您使用的是外部输入,则应该使用这种方式。
你需要通过这个
onChangeText={handleChange('email')}
onBlur={handleBlur('email')}
value={values.email}
到Textinput ,以及 Password 。 您的Textinput不会跟踪任何更改或提交。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.