У меня есть мульти-форма действия. Это означает, что хотя мои действия, проверка и начальные значения различны, фактические формы одинаковы, поэтому я снова их использую. В моем handleSubmitSuccess
я хочу позвонить, различные значения IV в зависимости от ситуации.
Вот код, который в настоящее время работает с одним IValue, который имеет дополнительные реквизиты:
interface IFullValues extends FormikValues {
username?: string;
email?: string;
password?: string;
group?: string;
}
handleSubmitSuccess = (
{ username, email, password, group }: IFullValues,
formikActions: FormikActions<IFullValues>
) => {
const { onSave, mode } = this.props;
const { setSubmitting } = formikActions;
setSubmitting(false);
if (mode === ActionMode.EDIT_INFO) {
onSave({ username, email, group });
} else if (mode === ActionMode.EDIT_PASSWORD) {
onSave({ password });
} else {
onSave({ username, email, password, group });
}
};
handleSubmit = (
{ username, email, password, group }: FormikValues,
formikActions: FormikActions<IFullValues>
) => {
const { doSubmit, mode } = this.props;
if (mode === ActionMode.EDIT_INFO) {
return doSubmit(updateUser, { username })
.then(() => this.handleSubmitSuccess({ username, email, group }, formikActions))
.catch((error: HttpError) => this.handleSubmitError(error, formikActions));
}
if (mode === ActionMode.EDIT_PASSWORD) {
return doSubmit(updateUser, { username })
.then(() => this.handleSubmitSuccess({ username, password }, formikActions))
.catch((error: HttpError) => this.handleSubmitError(error, formikActions));
}
return doSubmit(createUser, { username })
.then(() => this.handleSubmitSuccess({ username, email, password, group }, formikActions))
.catch((error: HttpError) => this.handleSubmitError(error, formikActions));
};
Можно ли фактически передать несколько значений в formikActions, и если да, то как это сделать? Я не могу найти пример этого, и это блокирует мою реализацию. Нужно ли полностью разделять форму?