Реагировать на поля формы окончательного сброса и проверки, но сохранить submitSucceeded - PullRequest
0 голосов
/ 29 января 2020

Я использую React Final Form для отображения формы и обработки отправки формы. Сценарий состоит в том, что я хочу очистить все поля формы при успешной отправке, но показать сообщение об успешной отправке, которое связано с окончательной формой submitSucceeded Свойство FormState.

Если я использую form.reset(), это удаляет все поля и проверки, но также очищает submitSucceeded FormState.

callback: event => {
         handleSubmit(event).then(() => {
              form.reset();
          });
    },

Я могу достичь этого результата, вручную пройдя через каждую форму и удалив значение поля, а затем сбросив состояние поля. Проблема в том, что я хочу применить это к любому количеству форм и не хочу вручную перезаписывать каждое поле, а вместо этого автоматически сбрасывать все поля.

callback: event => {
     handleSubmit(event).then(() => {
          form.change('name', undefined);
          form.resetFieldState('name');
          form.change('email', undefined);
          form.resetFieldState('email');
      });
},

Любая помощь здесь приветствуется! ref: https://final-form.org/docs/final-form/types/FormState

1 Ответ

1 голос
/ 30 января 2020

Мне удалось добиться этого, просматривая все отправленные формы values и сбрасывая каждую по отдельности:

const submitForm = async (values, form) => {

    // Do something on form submit here

    // Reset form fields, note in a real world scenario
    // this would be inside a success callback
    Object.keys(values).forEach(key => {
        form.change(key, undefined);
        form.resetFieldState(key);
    });
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...