Валидатор не является ошибкой функции - реагируйте на окончательные массивы полей формы

Я пытаюсь использовать компонент 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>

Любые идеи о том, как заставить это работать без обезьян-патча?

1 ответ

Решение

Итак, оказалось, что я использовал невероятно старую версию Final-Form вместе с Final-Form-Arrays. Я обновил, и ошибка ушла

Другие вопросы по тегам