Formik - 确认后如何重置表单
·
问题:Formik - 确认后如何重置表单
在Formik中,如何使重置按钮仅在确认后**重置表单?
即使您单击取消,我下面的代码仍会重置表单。
var handleReset = (values, formProps) => {
return window.confirm('Reset?'); // still resets after you Cancel :(
};
return (
<Formik onReset={handleReset}>
{(formProps) => {
return (
<Form>
...
<button type='reset'>Reset</button>
</Form>
)}}
</Formik>
);
解答
我不完全确定,但我认为您将不得不编写自己的重置功能,而无需使用reset类型的按钮。像这样的东西:
const handleReset = (resetForm) => {
if (window.confirm('Reset?')) {
resetForm();
}
};
function Example() {
return (
<Formik initialValues={{ value: 1 }}>
{formProps => {
return (
<Form>
<Field name="value" type="number" />
<button
onClick={handleReset.bind(null, formProps.resetForm)}
type="button"
>
Reset
</button>
</Form>
);
}}
</Formik>
);
}
如果你真的要使用onReset,我认为唯一的办法就是抛出一个错误。 Formik源代码似乎表明无论您的onReset()函数返回什么,都会调用resetForm()。
const handleReset = () => {
if (!window.confirm('Reset?')) {
throw new Error('Cancel reset');
}
};
function Example() {
return (
<Formik initialValues={{ value: 1 }} onReset={handleReset}>
{formProps => {
return (
<Form>
<Field name="value" type="number" />
<button type="reset">
Reset
</button>
</Form>
);
}}
</Formik>
);
}
尽管我个人仍然会使用第一个解决方案。
更多推荐
所有评论(0)