我目前在将 Formik 与 MaterialUI 表单一起使用时遇到问题。具体来说,我在使用 Material UI 以嵌套形式传递 Formik 输入值时遇到了问题,Formik.handleChange并且在将值从数字更改为字符串时遇到了一个小问题。
我有多个表单,这些表单在 Material UI 中与 Stepper 组件分开。由于我还在学习,我尝试将 Formik 包裹在其中一个步骤上(稍后我将包裹整个步进器)。这是它的外观:
          {activeStep === 0 && (
            <Formik
              initialValues={initialValues}
              validationSchema={validationSchema}
              onSubmit={(values, { setSubmitting }) => {
                setTimeout(() => {
                  alert(JSON.stringify(values, null, 2));
                  setSubmitting(false);
                }, 400);
              }}
            >
              {formik => (
                <form onSubmit={formik.handleSubmit}>
                  <div className="col-xl-6">
                    <Portlet fluidHeight>
                      <PortletHeader title="Incident Type" />
                      <PortletBody>
                        <IncidentSelect formik={formik} />
                      </PortletBody>
                    </Portlet>
                  </div>
                </form>
              )}
            </Formik>
          )}
问题出在 IncidentSelect 表单内部,FormikhandleChange似乎没有更改 selected radioButton。当我在 Chrome 中使用 React Developer Tools 进行检查时,似乎Formik.handleChange将值从 0 更改为“0”。我该如何解决?
另外,按照教程,我不确定如何抽象我的组件?请注意, DateTimePicker 正在使用material-ui/pickers。我不确定如何将值传递给 Formik。
任何帮助表示赞赏。
谢谢
function IncidentSelect(props) {
  const [value, setValue] = React.useState("female");
  const handleRadioChange = e => {
    console.log(props.formik.getFieldProps("incidentType"));
    setValue(e.target.value);
  };
  return (
    <>
      <FormControl component="fieldset">
        <FormLabel component="legend" required>
          Incident Type:
        </FormLabel>
        <RadioGroup
          aria-label="Incident Type"
          name="incidentType"
          value={value}
          onChange={handleRadioChange}
          {...props.formik.getFieldProps("incidentType")}
        >
          <FormControlLabel
            value={0}
            control={<Radio />}
            label="Injury To Guest"
          />
          <FormControlLabel
            value={1}
            control={<Radio />}
            label="Injury To Worker"
          />
          <FormControlLabel
            value={2}
            control={<Radio />}
            label="Incident / Accident"
          />
          <FormControlLabel
            value={3}
            disabled
            control={<Radio />}
            label="OSH / Kids Camp"
          />
        </RadioGroup>
      </FormControl>
      <DateTimePicker
        label="Signed Date"
        variant="outlined"
        className={classes.margin}
        value={selectedDate}
        onChange={handleDateChange}
      />
    </>
  );
}