繁体   English   中英

为什么在 material-ui 中输入 formik 表单不起作用?

[英]why input of formik form in material-ui dont work?

我使用 Axios 并调用 API 作为我的输入值,即使我设置了 enableReinitialize: true,但是

  1. 当我想更改输入时,它不起作用
  2. 是的,验证不起作用

我该如何解决这两个问题?

    const validationSchema = yup.object({
      email: yup
        .string("Enter your email")
        .email("Enter a valid email")
        .required("Email is required"),
      password: yup
        .string("Enter your password")
        .min(8, "Password should be of minimum 8 characters length")
        .required("Password is required"),
    });
    
    const FormOfFactors = () => {
      const [Industry, setIndustry] = useState();
      const params = useParams();
    
      useEffect(() => {
        async function fetchMyAPI() {
          let response = await axios.get(
            "http://nahoor.af:8080/nahoor/company/" + params.id,
          );
          setIndustry(response.data);
        }
    
        fetchMyAPI();
      }, []);
      const formik = useFormik({
        initialValues: {
          Industry,
        },
        validationSchema: validationSchema,
        onSubmit: (values) => {
          alert(JSON.stringify(values, null, 2));
          console.log("bebin dorost shod?!", values);
        },
        enableReinitialize: true,
      });
    
      return (
        <div>
          <form onSubmit={formik.handleSubmit}>
            <TextField
              fullWidth
              variant="outlined"
              id="email"
              name="email"
              label="Email"
              value={formik.values.Industry?.email}
              onChange={formik.handleChange}
              error={formik.touched.email && Boolean(formik.errors.email)}
              helperText={formik.touched.email && formik.errors.email}
            />
            <TextField
              fullWidth
              variant="outlined"
              id="password"
              name="password"
              label="Password"
              type="password"
              value={formik.values.password}
              onChange={formik.handleChange}
              error={formik.touched.password && Boolean(formik.errors.password)}
              helperText={formik.touched.password && formik.errors.password}
            />
            <Button color="primary" variant="contained" fullWidth type="submit">
              Submit
            </Button>
          </form>
        </div>
      );
    };
    
    export default FormOfFactors;

在 Industry state 中定义您的所有状态,并在每个文本字段中的名称道具中定义每个字段的名称,并为每个 onChange 使用 onChange = {(e)=>formik.seFieldValue("stateName",e.target.value)}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM