【发布时间】:2020-12-11 19:31:18
【问题描述】:
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>
)
}
我的表单中的验证工作正常。但是如果用户没有输入任何字段,它会带有必需的警告。我正在尝试在清除按钮单击时清除/重置表单,但找不到任何可能的解决方案。谁能帮我解决这个问题。
【问题讨论】:
-
对于清除按钮,您可以尝试指定按钮类型
type="reset"。如果没有为按钮指定类型属性,则type="submit"是默认类型。 -
我尝试过 type = "rest 但它不会重置表单。重置表单意味着我想要新表单并清除其所有状态。我不确定如何使用 onReset 或 resetForm 使用 formik
-
您的 sn-p 没有指定 任何 按钮类型。请将 sn-p 更新为有问题的实际代码,否则我们只是猜测问题可能是什么。
-
正如@DrewReese 提到的尝试 它将起作用。欲了解更多信息stackoverflow.com/questions/55583815/…。
标签: javascript reactjs typescript formik