Задать вопрос
@dimmma77

Как добавить данные в массив через foreach в react?

Есть массив в this.state.massiv . Как добавить новый элемент в этот массив? Через push будет нормально? Так же интересует можно ли как-нибудь передать данные с одного компонента в другой не использую this.state или this.props? И последний вопрос: ajax запрос внутри foreach, есть ли у foreach калбэк? как узнать когда весь массив переберётся и только после этоги выполнять следующий код?
  • Вопрос задан
  • 2311 просмотров
Подписаться 1 Оценить Комментировать
Решения вопроса 1
1. push мутирует массив. Читаем это и никогда не мутируем state. На ES6 добавить элемент в массив можно так:

this.setState({ massiv: [ ...this.state.massiv, "новый элемент"  ] })


2. Данные компоненты должны получать только через props. Конечно, некоторые из компонентов у вас будут как controller-view (подключены к store и будут получать данные через события\конекст\еще как-нибудь), но таких контроллеров должно быть мало, реально мало - в основном на верхних уровнях дерева.

3. По поводу ajaxa - выносите такую логику в бизнес-слой. В ваши action creators, например. Тогда у вас не возникнет таких проблем: делаете запрос -> когда он завершится отправляете соответствующий action (success, failure) -> store обрабатывает экшен, изменяет свое состояние -> controller view получает новые данные и рендерится

4. В ES6 есть промисы
const someArr = [];
const doAjaxJob = el => fetch('some-url', .... );
const p = Promise.all(someArr.map(doAjaxJob)); // <-- сюда можно подписаться


PS И главное - не превращайте хороший функциональный стиль в спагетти
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы
Rocket Смоленск
от 80 000 до 130 000 ₽
div. Ставрополь
от 40 000 до 90 000 ₽
Wanted. Санкт-Петербург
До 220 000 ₽
18 дек. 2024, в 11:03
5000 руб./за проект
18 дек. 2024, в 10:44
130000 руб./за проект
18 дек. 2024, в 10:02
7000 руб./за проект