Javascript 尝试使用验证创建一个Formik多步骤。如何验证字段?

Javascript 尝试使用验证创建一个Formik多步骤。如何验证字段?,javascript,reactjs,formik,Javascript,Reactjs,Formik,我正试图在formik中进行现场验证。问题是我制作了一个多步骤表单,我的方法是我制作了一个组件数组,并根据页面[状态]使用它们,我不知道如何发送道具。 我想验证该字段是否只包含两位数字,如果没有,则显示一条错误消息 const SignUp = () => { const state = useSelector((state: RootState) => state); console.log("state", state); const dispatch = use

我正试图在formik中进行现场验证。问题是我制作了一个多步骤表单,我的方法是我制作了一个组件数组,并根据页面[状态]使用它们,我不知道如何发送道具。 我想验证该字段是否只包含两位数字,如果没有,则显示一条错误消息


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>
    </>
  );
};


常量注册=()=>{
const state=useSelector((state:RootState)=>state);
console.log(“state”,state);
const dispatch=usedpatch();
返回(
{
设置超时(()=>{
警报(JSON.stringify(值,null,2));
}, 500);
}}
render={({错误,触摸,正在验证})=>(
{页[状态]}
{
调度(减量());
}}
>
上
{
页数.长度-1
下一个
)}
/>
);
};
常量第2页=()=>{
返回(
你的理想体重是多少
想去吗?
);
};
常量输入:React.FC=({
名称
一旦改变,
htmlFor,
类型,
验证,
占位符
}) => {
返回(
公斤
);
};

有一个名为Yup的库,您可以使用它,您可以自由设置条件验证

Yup最适合使用formik进行验证

在每个步骤之后,您都可以启用标志并相应地设置验证


此外,我建议您与Formik一起使用。而不是formik,因为在那里您可以创建一个单独的文件进行验证,并可以给出其路径。因此,这也将改善您的文件夹结构

有一个名为Yup的库,您可以使用它,您可以自由设置条件验证

Yup最适合使用formik进行验证

在每个步骤之后,您都可以启用标志并相应地设置验证


此外,我建议您与Formik一起使用。而不是formik,因为在那里您可以创建一个单独的文件进行验证,并可以给出其路径。因此,这也将改善您的文件夹结构

你知道从哪里开始学习这个吗?我是说一些2019年信息?我正在粘贴一个示例,这将帮助您更好地理解,但您也需要遵循官方文档,我只是在分享高级工作流程。您知道从哪里开始学习这个吗?我是说一些2019年的信息?我正在粘贴一个样本,这将帮助您更好地理解,但您也需要遵循官方文档,我只共享高级工作流。您还可以使用
验证
功能并触发文档中所示字段的
更改
。您还可以使用
验证
功能并触发文档中所示字段的
更改