javascript - 尝试使用 Formik 进行多步骤验证。如何验证字段?

标签 javascript reactjs formik

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


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

最佳答案

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

是的,最适合使用 formik 进行验证。

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

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

关于javascript - 尝试使用 Formik 进行多步骤验证。如何验证字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59410446/

相关文章:

javascript - Angular 滑动切换动画在 ng-repeat 中不起作用?

reactjs - 返回的 React Custom Hook set 函数不是函数

reactjs - 通过 react-dropzone 和 formik 在 react 中上传文件

javascript - 将react-select与formik一起使用时,无法读取未定义的属性 'type'

javascript - Formik 和 yup 表单验证无法按预期使用 Virtualized Select

javascript - html5 视频无法在 Apple 机器上的 firefox 中播放

javascript - 如何保存 DOM 插入?

javascript - Asp.Net 从 javascript 的弹出窗口中获取值

javascript - 当参数作为对象发送时,为什么 Node 服务器不读取 React 中的 axios post ?

javascript - React Hooks 能否完全替代 Redux?