我不完全确定,但我认为您将不得不编写自己的重置功能,而无需带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源代码似乎表明resetForm()
无论您的onReset()
函数返回什么都会被调用。
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>
);
}
尽管个人而言,我仍然会采用第一个解决方案。