【发布时间】:2021-07-25 18:00:26
【问题描述】:
我想在 API 端点中提交表单。我有很多输入,但在这里我只包括导致错误的输入:“电话”输入,这不是必需的。 当我不填写“电话”输入时,我收到此错误:
{validation_messages: {phone: {stringLengthInvalid: "Invalid type given. String expected"},…},…}
detail: "Failed Validation"
status: 422
title: "Unprocessable Entity"
在后端,它接受字符串或空字符串''。 错误: { “电话”:空, } 正确的: { “电话”: ”” }
我的组件:
const UpdateData: React.FC = () => {
const {
phone,
setPhone,
} = React.useContext(MyContext);
const updateContact = () => {
const data = {
phone: phone,
};
axios
.put("/xx/update", data)
.then((response) => {
setPhone(response.data.phone);
return response.data;
})
.catch((error) => {
setMessage("Sth went wrong!");
setIserror(true);
});
};
return (
<React.Fragment>
<IonPage className="ion-page" id="main-content">
<IonContent className="ion-padding">
<IonGrid>
<form className="ion-padding">
<IonItem>
<IonLabel position="floating">Phone</IonLabel>
<IonInput
placeholder="Example: 0333-12345678"
value={phone}
onIonChange={(e) => setPhone(e.detail.value)}
></IonInput>
</IonItem>
<IonButton
className="ion-text-center btn-warning"
type="submit"
onClick={(e) => {
e.preventDefault();
updateContact();
history.goBack();
}}
>
Save
</IonButton>
</form>
</IonGrid>
</IonContent>
</IonPage>
</React.Fragment>
);
};
export default UpdateData;
在“MyContext”中,我为输入设置了状态:
const [phone, setPhone] = useState<string>("");
任何帮助将不胜感激。
【问题讨论】:
-
错误显示
stringLengthInvalid,不一定是null...也许您的后端不接受空字符串。你确认了吗? -
是的,它接受空字符串,
const data = { phone: phone || "", };解决了这个问题,但是当包含我更新的数据的组件被渲染时,我仍然看到空值只有 1 秒。该字段仅显示 null 1 秒钟,然后消失。它应该什么都不显示。
标签: javascript reactjs ionic-framework frontend