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形式显示服务器端验证消息,那么指向这些示例的链接可能会有所帮助。泰