Диалог файла не открывается при вызове в обещании возврата - PullRequest
0 голосов
/ 13 октября 2018

У меня есть диалоговое окно загрузки файла, к которому пользователь может получить доступ с помощью кнопки:

<input
  ref={this.inputFileRef}
  type="file"
  style={{ display: 'none' }}
  onChange={e => this.onChange(e, this.props)}
/>

У меня есть функция, которая обрабатывает отправку формы и выполняет асинхронный вызов:

handleSubmit = formData => {
  restClient(CREATE, 'projects', { formData })
    .then(({ data }) => {
      // other stuff
    });
}

Я могу нажать на кнопку внутри функции handleSubmit следующим образом (она дает мне диалог выбора файла):

handleSubmit = formData => {
  this.props.inputFileRef.current.click();
  restClient(CREATE, 'projects', { formData })
    .then(({ data }) => {
      // other stuff
    });
}

Но я НЕ МОГУ заставить ее работать внутри функции then:

handleSubmit = formData => {
  restClient(CREATE, 'projects', { formData })
    .then(({ data }) => {
      this.props.inputFileRef.current.click();
      // other stuff
    });
}

Кто-нибудь знает, как это исправить?

1 Ответ

0 голосов
/ 13 октября 2018

Поскольку обещание асинхронно, вы теряете инициированное пользователем действие при первом щелчке для действия отправки и, следовательно, больше не можете щелкнуть элемент внутри элемента then.Вам придется найти другой путь.

...