小编Jos*_*hoa的帖子

使用带有钩子的 React.memo 来控制输入

我正在通过自定义 React 钩子提供一些表单功能。这个钩子有一些类似于 Formik 的功能(但这真的是基本的东西)。

function useFormValidation(initialState, validate) {
  const [values, setValues] = React.useState(initialState);
  const [errors, setErrors] = React.useState({});
  const [isSubmitting, setSubmitting] = React.useState(false);

  React.useEffect(() => {
    if (isSubmitting) {
      const noErrors = Object.keys(errors).length === 0;
      if (noErrors) {
        console.log("authenticated!", values.email, values.password);
        setSubmitting(false);
      } else {
        setSubmitting(false);
      }
    }
  }, [errors]);

  function handleChange(event) {
    setValues({
      ...values,
      [event.target.name]: event.target.value
    });
  }

  function handleBlur() {
    const validationErrors = validate(values);
    setErrors(validationErrors);
  }

  function handleSubmit(event) {
    event.preventDefault();
    const validationErrors = validate(values);
    setErrors(validationErrors);
    setSubmitting(true);
  } …
Run Code Online (Sandbox Code Playgroud)

html javascript reactjs react-hooks

4
推荐指数
1
解决办法
3068
查看次数

标签 统计

html ×1

javascript ×1

react-hooks ×1

reactjs ×1