#javascript #reactjs #validation #react-final-form
Вопрос:
Я использую окончательную проверку формы react для проверки формы. Существует требование, чтобы мне нужно было отключить проверку некоторых полей на основе другого поля (флажок), но я не смог этого сделать при отправке формы. Отображается ошибка проверки. Ниже приведен код, в котором я выполняю проверку формы
render={({ handleSubmit, form, submitting, pristine, values }) => {
const formFields = fieldDefs.map(
({
name,
title,
drawer: {
component: Component,
validate,
isFieldWrapperComponent,
fieldInstructionNote,
options,
renderOption,
checkIsDisabled,
checkIsHidden,
...props
}
}) => {
const { isDisabled, updateValues } = checkIsDisabled?.(values) ?? {};
if (updateValues?.length) {
updateValues.forEach((params) => form.mutators.setValueMutator(...params));
}
return (
<Row key={name} gutter={8} style={{ paddingBottom: '8px' }}>
{(
<>
<Col span={6}>
<Text strong>{title}</Text>{' '}
{validate amp;amp; <span style={{ color: 'red' }}>*</span>}
</Col>
<Col span={2} />
<Col span={16}>
<Field
name={`draftLibraryData.${name}`}
component={Component}
validate={isValidate(isDisabled, validate)}
options={options}
render={renderOption}
disabled={isDisabled}
{...props}
/>
</Col>
</>
)}
</Row>
);
}
);
return (
<Drawer
title={state.drawerTitle}
placement="right"
closable={submitting || pristine}
maskClosable={submitting || pristine}
visible={state.isDrawerVisible}
width={897}
>
<form onSubmit={handleSubmit}>
<p>
<span style={{ color: 'red' }}> * Indicates a required field </span>
</p>
{formFields}
<SectionActionBar
handleDiscard={() => resetValidationState(form, values, fieldDefs)}
isModified={!(submitting || pristine) || isTempDataModified(values)}
isFloatingAlert={false}
form={form}
/>
<FormState height="300px" overflowY="auto" border="1px solid black" />
</form>
</Drawer>
);
)}
и тогда это функция для isValidate.
export const isValidate = (isDisabled, validate) => {
return isDisabled ? undefined : validate;
};
Когда я отправляю форму, я сталкиваюсь с проблемой; проверка срабатывает для полей с isDisabled
true. Кто-нибудь может, пожалуйста, указать мне правильное направление?
Комментарии:
1. Может ли кто-нибудь сказать мне, где я ошибаюсь в приведенном выше коде или мне нужна дополнительная информация?