fetch() Отправляет запрос много раз

Здраствуйте делаю админ панел на Vue. Использую fetch() в Vuex - actions. Делаю запрос с локалхоста на другой сервер. Первый запрос отправляеться 2 раза. Второй запрос отправляеться 4 раза. Третий - 8 раз. И так продолжаеться. 2 дня испробовал много чего. Никак не могу решить. Спасибо. Форма отправки (логин) Метод кокторый срабатывает при submit

Первый запрос

Второй запрос


Ответы (1 шт):

Автор решения: vp_arth

@vp_arth: Очевидно, что проблема не с самим fetch, а с каким-то обработчиком события, который сам себя повторно навешивает)

onSubmitLogin - обработчик события.
В нём при каждом срабатывании на this.fv навешиваются дополнительные обработчики событий core.form.valid и core.form.invalid..
После срабатывания они никуда не деваются, а при следующем клике на submit к ним добавляется пара новых обработчиков. При этом в каждом обработчике valid выполняется http запрос.

Эти обработчики нужно навешивать вне обработчика submit, либо реализовывать паттерн .once(), который отписывается при первом же срабатывании.


FormValidation.validate возвращает Promise, поэтому можно вообще не пользоваться его событийной системой:

this.fv.validate()
  .then(status => {
        // status can be one of the following value
        // 'NotValidated': The form is not yet validated
        // 'Valid': The form is valid
        // 'Invalid': The form is invalid
  if (status === 'Valid') {
    return fetch('...');
  }
});
→ Ссылка