【发布时间】:2019-06-20 06:01:50
【问题描述】:
我在我的 React 应用程序中使用 Formik。我有一个包含 3 个字段的简单表单。我正在使用该表格进行 2 次操作。添加/编辑资源。
我的问题是一个字段是可选的。这意味着我永远不应该发送它,如果它的值为空。 目前,我发送了一个错误的空字符串。
我正在使用 TS-React-Formik,这是我的 handleSubmit 方法代码:
interface IValues extends FormikValues {
name: string;
owner?: string;
groups: string[];
}
interface CreateAndEditProps {
doSubmit(service: object, values: object): AxiosResponse<string>;
onSave(values: IValues): void;
}
handleSubmit = (values: FormikValues, formikActions:FormikActions<IValues>) => {
const { doSubmit, onSave, isEditMode } = this.props;
const { setSubmitting } = formikActions;
const payload: IValues = {
name: values.name,
groups: values.groups,
owner: values.owner
};
const submitAction = isEditMode ? update : create;
return doSubmit(submitAction, payload)
.then(() => {
setSubmitting(false);
onSave(payload);
})
.catch(() => {
setSubmitting(false);
});
};
我认为一个简单的 if 语句会起作用,虽然它起作用了,但我一点也不喜欢它。让我举个例子说明原因。如果我以类似的形式再添加 2 个可选字段,就像我即将做的那样,我不想做几个 if 语句来实现这一点。
如果你能想到一种更优雅、更干的方法,那就太棒了。感谢您的宝贵时间。
【问题讨论】:
标签: javascript reactjs typescript formik http-method