Как отправить прогресс загрузки S3 в aws-ampify (React native)? - PullRequest
0 голосов
/ 09 марта 2019

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

Storage.put(text, Buffer.from(photo.base64, "base64"), {
  progressCallback(progress) {
    prog = parseInt(progress.loaded/progress.total*100)
    console.log(prog+"%");
    this.setState({uploadProgress: prog+"%"})
  },
  contentType: "image/jpeg"
})

1 Ответ

1 голос
/ 19 апреля 2019

Это потому, что вы вызываете this в обратном вызове метода Storage.put. Вы можете кэшировать ссылку на this вне метода Storage.put, например (из-за отсутствия лучшего термина), это:

const foo = this;
Storage.put(text, Buffer.from(photo.base64, "base64"), {
  progressCallback(progress) {
    prog = parseInt(progress.loaded/progress.total*100)
    console.log(prog+"%");
    foo.setState({uploadProgress: prog+"%"})
  },
  contentType: "image/jpeg"
})
...