Sin*_*ngh 1 javascript typescript reactjs formik
const TextForm: React.FunctionComponent<Props> = (props) => {
const formError = yup.object({
name: yup.string().required("Required"),
});
const formValidation = (fieldName) => {
return {
invalid: !!form.errors[fieldName] && form.touched[fieldName],
invalidText: form.errors[fieldName],
onBlur: form.handleBlur,
};
};
const form = useFormik({
initialValues: {
name,
id,
},
formValidation
formError,
validateOnChange: true,
validateOnMount: true,
initialTouched: {},
});
return(
<React.Fragment>
<form>
<TextInput
id="text-input-2"
{...validation("name")}
type="text"
name = "name"
onChange={(event) => {
setName(event.target.value);
form.handleChange(event);
}}
/>
<TextInput
id="text-input-2"
{...validation("id")}
type="text"
name = "id"
onChange={(event) => {
setId(event.target.value);
}}
/>
<Button>Clear</Button>
<Button>Submit</Button>
</form>
</React.Fragment>
)
}
Run Code Online (Sandbox Code Playgroud)
我的表单中的验证工作正常。但如果用户未输入任何字段,则会出现必需的警告。我试图通过单击“清除”按钮清除/重置表单,但找不到任何可能的解决方案。谁能帮我这个。
快速搜索 Formik 文档。
FormikonSubmit和作为第二个参数onReset传递formikBag,其中包含操作resetForm。回调resetForm可以从此对象解构并在回调formikBag中使用。
const form = useFormik({
initialValues: {
name,
id,
},
formValidation
formError,
validateOnChange: true,
validateOnMount: true,
initialTouched: {},
onSubmit: (values, { resetForm }) => {
// submission logic
resetForm();
},
onReset: (values, { resetForm }) => resetForm(),
});
Run Code Online (Sandbox Code Playgroud)
您还只需要确保表单按钮具有正确的按钮类型,以便表单在单击时采取正确的操作。