Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs 使用材质UI在嵌套表单中传递Formik输入值_Reactjs_Formik_Formik Material Ui - Fatal编程技术网

Reactjs 使用材质UI在嵌套表单中传递Formik输入值

Reactjs 使用材质UI在嵌套表单中传递Formik输入值,reactjs,formik,formik-material-ui,Reactjs,Formik,Formik Material Ui,我目前在将Formik与MaterialUI表单一起使用时遇到问题。明确地 使用Material UI在嵌套表单中传递Formik输入值时遇到问题,并且出现了一个小问题,Formik.handleChange正在将值从数字更改为字符串 我有多个表单,它们在MaterialUI中用Stepper组件拆分。因为我还在学习,所以我尝试在其中一个步骤上包装Formik(稍后我将包装整个步进机)。下面是它的外观: {activeStep === 0 && (

我目前在将Formik与MaterialUI表单一起使用时遇到问题。明确地 使用Material UI在嵌套表单中传递Formik输入值时遇到问题,并且出现了一个小问题,
Formik.handleChange
正在将值从数字更改为字符串

我有多个表单,它们在MaterialUI中用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>
          )}
如中所述,抽象要使用的组件更容易。使您有机会在以后的应用程序中重用它们,并使代码更具可读性

Formik为您提供了
useFields
API,通过钩子获得该领域的道具
useFields
正在查找组件的
名称
道具,以找到相应的字段

因此,可以按如下方式从MaterialUI中提取
RadioGroup

export const IncidentRadioButton = ({ options, ...props }) => {
  const [field, meta] = useField(props);
  return (
    <>
      <RadioGroup {...field} {...props}>
        {options.map((option, index) => (
          <FormControlLabel
            control={<Radio />}
            label={option.name}
            value={option.value}
            key={index}
          />
        ))}
      </RadioGroup>
      {meta.touched && meta.error ? (
        <div className="error">{meta.error}</div>
      ) : null}
    </>
  );
};
export const IncidentRadioButton=({options,…props})=>{
const[field,meta]=useField(props);
返回(
{options.map((选项,索引)=>(
))}
{meta.moucted&&meta.error(
{meta.error}
):null}
);
};
然后您可以使用
选项
道具相应地放置数据

export const IncidentRadioButton = ({ options, ...props }) => {
  const [field, meta] = useField(props);
  return (
    <>
      <RadioGroup {...field} {...props}>
        {options.map((option, index) => (
          <FormControlLabel
            control={<Radio />}
            label={option.name}
            value={option.value}
            key={index}
          />
        ))}
      </RadioGroup>
      {meta.touched && meta.error ? (
        <div className="error">{meta.error}</div>
      ) : null}
    </>
  );
};