我正在尝试在Formik中进行字段验证。问题是我制作了一个多步骤表单,我的方法是制作了一个组件数组,并基于pages [state]使用它们,但我不知道该如何发送道具。 我想验证该字段是否仅包含两位数字,如果没有,则显示错误消息
const SignUp = () => {
const state = useSelector((state: RootState) => state);
console.log("state", state);
const dispatch = useDispatch();
return (
<Formik
initialValues={{ firstName: "", lastName: "", email: "" }}
onSubmit={values => {
setTimeout(() => {
alert(JSON.stringify(values, null, 2));
}, 500);
}}
render={({ errors, touched, isValidating }) => (
<Form>
<div>{pages[state]}</div>
<button
type="button"
onClick={() => {
dispatch(decrement());
}}
>
Prev
</button>
<button
type="button"
onClick={() => {
pages.length - 1 <= state
? console.log("No more pages")
: dispatch(increment());
}}
>
Next
</button>
</Form>
)}
/>
);
};
const Page2 = () => {
return (
<>
<h1>
What is your <span id="idealWeightText">ideal weight</span> that you
want to reach?
</h1>
<Input
name={"firstName"}
htmlFor={"firstName"}
type={"number"}
validation={validateKilograms}
/>
</>
);
};
const Input: React.FC<FieldProps> = ({
name,
onChange,
htmlFor,
type,
validation,
placeholder
}) => {
return (
<>
<label htmlFor={name}>
<Field
type={type}
name={name}
placeholder={placeholder}
validate={validation}
onChange={onChange}
/>
kg
</label>
</>
);
};
答案 0 :(得分:0)
有一个名为Yup的库,您可以使用它,您将可以自由设置条件验证。
Yup最适合于formik进行验证。
每一步之后,您可以启用一个标志并相应地设置验证。
我也建议您使用withFormik。代替formik,是因为您可以在那里创建一个单独的文件进行验证并提供其路径。这样也可以改善您的文件夹结构。