Я пытаюсь использовать компонент final-form-field-arrays в моем приложении React.Когда я пытаюсь его использовать, я получаю сообщение «валидатор не является ошибкой функции».
Я проследил его до функции runFieldLevelValidation в final-form.es.js
var runFieldLevelValidation = function runFieldLevelValidation(field, setError) {
var validators = field.validators;
console.log(field);
console.log(field.validators);
var promises = [];
var validatorKeys = Object.keys(validators);
if (validatorKeys.length) {
var error = void 0;
Object.keys(validators).forEach(function (index) {
var validator = validators[Number(index)];
if (!validator.getValidator) {
var errorOrPromise = validator(getIn(state.formState.values, field.name), state.formState.values);
if (errorOrPromise && isPromise(errorOrPromise)) {
promises.push(errorOrPromise.then(setError));
} else if (!error) {
// first registered validator wins
error = errorOrPromise;
}
}
});
setError(error);
}
return promises;
};
Рассматриваемая строка
var errorOrPromise = validator(getIn(state.formState.values, field.name), state.formState.values);
После регистрации полей (как вы можете видеть выше) я обнаружил, что поле FieldArray не имеет самой функции валидатора, но вместо этого имеет функцию getValidator.Я пропатчил его обезьяной, и он работает, но я полагаю, что в этом нет необходимости
<Field name="name" component={RenderField} type="text" label="Name" />
<Field name="date" component={RenderField} type="date" text={moment().format('LL')}
label="Date of Service" />
<Field name="time" type="select" component={RenderField} label="Time of Service"
selectedOption={moment().format('k mm')} options={this.generateAppointmentTimes()} />
<FieldArray name="customers" >
</FieldArray>
Любые идеи о том, как заставить это работать без патча обезьяны?