@poles1469

Как положить в стейт ответ от PromiseAll?

Добрый день!

Есть state, где храниться массив адресов для запроса:

const [films, setFilms] = React.useState(["https://swapi.dev/api/films/1/", "https://swapi.dev/api/films/2/", "https://swapi.dev/api/films/3/", "https://swapi.dev/api/films/6/",])

Так же есть стейт, куда нужно положить ответы запроса :

const [filmsName, setFilmsName] = React.useState([])


Что бы сделать запрос на массив элементов использовал PromiseAll:

const allP = await Promise.all(films.map(el => fetch(el)
      .then(el => el.json())
      .then(json => filmsNameArr.push(json))
      ))
      setFilmsName(filmsName)


filmsNameArr - массив созданный, что бы добавлять элементы, после получения объекта, только вот почему-то даже в сети запрос не отправляется и не видно, почему?

Заранее Спасибо!
  • Вопрос задан
  • 85 просмотров
Решения вопроса 1
Devilz_1
@Devilz_1
Frontend-Developer
только вот почему-то даже в сети запрос не отправляется и не видно, почему?

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

Войдите, чтобы написать ответ

Похожие вопросы