Javascript Formik Field API的onChange函数不';不能使用子组件

Javascript Formik Field API的onChange函数不';不能使用子组件,javascript,reactjs,formik,yup,Javascript,Reactjs,Formik,Yup,我试图将FormikFieldAPI中的material ui dropzone组件(它是上传文件!)作为子组件进行验证,但效果并不理想。我上载文件时出现此错误: TypeError: can't access property "type", target is undefined 我已尝试重写onChange函数,以便将文件正确添加到表单对象中: field.onChange = (e) => { form.values.appLogo = e;

我试图将FormikFieldAPI中的material ui dropzone组件(它是上传文件!)作为子组件进行验证,但效果并不理想。我上载文件时出现此错误:

TypeError: can't access property "type", target is undefined
我已尝试重写onChange函数,以便将文件正确添加到表单对象中:

field.onChange = (e) => {
    form.values.appLogo = e;
    form.touched.appLogo = true;
}
但效果不好。对象表单包含我想要的内容,但是我的UI呈现了以前的状态,这是有问题的,因为我需要知道启用“下一个表单步骤”按钮时一切都正常

下面是我代码中有问题的部分:

const Step1 = (props) => {
  return (
    <Field name="appLogo">
      {({ field, form, meta }) => (
        /**
         *  Overriding of onChange
         */
        <div>
          {
            (field.onChange = (e) => {
              form.values.appLogo = e;
              form.touched.appLogo = true;
            })
          }
          <DropzoneArea
            filesLimit={1}
            acceptedFiles={["image/png"]}
            dropzoneClass="dropzoneArea"
            dropzoneText=""
            showAlerts
            {...field}
          />
        </div>
      )}
    </Field>
  );
};
const Step1=(道具)=>{
返回(
{({field,form,meta})=>(
/**
*覆盖onChange
*/
{
(field.onChange=(e)=>{
form.values.appLogo=e;
form.touch.appLogo=true;
})
}
)}
);
};

你能帮帮我吗?

你不应该重写onChange函数。你能试着改用setFieldValue吗谢谢nguyễn-trần-t-m

我的问题最终通过以下代码得到解决:

<Field name="appLogo">
    {({ field, form, meta }) => (
        <DropzoneArea
            filesLimit={1}
            acceptedFiles={["image/png"]}
            dropzoneClass="dropzoneArea"
            dropzoneText=""
            {...field}
            onChange={(e) => {
                props.setFieldValue("appLogo", e);
            }}
            showAlerts
        />
    )}
</Field>

{({field,form,meta})=>(
{
props.setFieldValue(“appLogo”,e);
}}
显示警报
/>
)}

上载新文件时是否执行field.onChange?是。该函数执行得很好,但默认情况下它使用e.target.value,在我的例子中它返回未定义的值。我必须拯救e