Javascript 服务器端的表单验证。如何在表单中显示验证消息?(React/Formik/Antd)

Javascript 服务器端的表单验证。如何在表单中显示验证消息?(React/Formik/Antd),javascript,reactjs,antd,formik,Javascript,Reactjs,Antd,Formik,例如,仅包含电子邮件字段的表单: const RegistrationForm = (props) => { const { values, touched, errors, handleChange, handleBlur, handleSubmit, status } = props; const emailFieldHelp = () => { const { touched, errors, status, setStatus } = props;

例如,仅包含电子邮件字段的表单:

const RegistrationForm = (props) => {
  const { values, touched, errors, handleChange, handleBlur, handleSubmit, status } = props;

  const emailFieldHelp = () => {
     const { touched, errors, status, setStatus } = props;
     console.log('status: ', status);
     if (touched.email && errors.email) {
       return errors.email;
     }

     if (status && !status.isUserAdded) {
       setStatus({"isUserAdded": false});
       return "User already exist";
     }
     return null;
   };

  return (
    <Form onFinish={handleSubmit}>
    <Form.Item
          help={emailFieldHelp()}
          validateStatus={setFieldValidateStatus('email')}
          label="E-mail"
          name="email"
          hasFeedback={touched.email && values.email !== ''}
        >
         <Input
           placeholder="Email"
           value={values.email}
           onChange={handleChange}
           onBlur={handleBlur}
         />
        </Form.Item>
        <Form.Item>
          <Button type="primary" htmlType="submit">Submit</Button>
        </Form.Item>
        </Form>
  )
};
const RegFormView = withFormik({
  validationSchema,
  mapPropsToValues: () => ({
    email: ''
  }),

  handleSubmit: async (values, { setErrors, setSubmitting, setStatus }) => {
    await userService.createUser('/signup/', values)
        .then(response => {
          setStatus('');
          const status = (response.isAdded)
              ? {isUserAdded: true}
              : {isUserAdded: false};
          setStatus(status);
          setSubmitting(false);
          }, (error) => {
            setErrors(error);
         });
     },
})(RegistrationForm);
const注册表单=(道具)=>{
const{values,toucted,errors,handleChange,handleBlur,handleSubmit,status}=props;
const emailFieldHelp=()=>{
const{toucted,errors,status}=props;
console.log('状态:',状态);
如果(touch.email&&errors.email){
返回错误。电子邮件;
}
if(status&&!status.isUserAdded){
setStatus({“isUserAdded”:false});
返回“用户已存在”;
}
返回null;
};
返回(
提交
)
};
const RegFormView=withFormik({
验证模式,
mapPropsToValues:()=>({
电子邮件:“”
}),
handleSubmit:async(值,{setErrors,setSubmitting,setStatus})=>{
等待userService.createUser('/signup/',值)
。然后(响应=>{
设置状态(“”);
常量状态=(response.isAdded)
?{isUserAdded:true}
:{isUserAdded:false};
设置状态(状态);
设置提交(假);
},(错误)=>{
设置错误(错误);
});
},
})(登记表);
当我发送表单并在服务器端验证它时,我返回'isAdded'=false或true。然后我将状态设置为{isUserAdded:true},如果未添加用户,则设置为false。我完全不知道如何在email字段下的表单中显示此消息并保持表单工作。现在我可以显示消息,但由于状态已设置为{isUserAdded:true},因此无法再次发送表单。当用户更改电子邮件字段时,我是否需要以某种方式更改状态?但我不能这么做,因为有福米克

这里
onChange={handleChange}
我只能传递handleChange,不能运行我的函数,或者我可以像这样运行我的函数
onChange={myFunc()}
但是似乎不可能将handleChange传递给Formik。(我不需要像这样称呼它)改变(e)它不起作用!我需要把它传给福米克)我完全卡住了。如果您有react plz帮助方面的知识

如果您知道一些示例如何以react形式显示服务器端验证消息,那么指向这些示例的链接可能会有所帮助。泰