Компонент А получат с сервера сообщение и записывает его в newMessage . компонент В следит за newMessage и при обновлении вставляет его в массив и рендерит. Но если сообщения приходят быстро, то newMessage перезаписывается до того как обновится страница.
Пример:
for (let i = 0; i < 5; ++i) {//предположим что это сервер присылает сообщения
this.setState({
newMessage:i
});
}
Ожидаемый результат: 0 1 2 3 4.
На самом деле: 4.
Можно их как то поставить в очередь(средствами react)???
UPDATE
COMPONENT A
//msg {id:'...', content:'...', date:'...', ...}
reciveMessage(msg){//<-- сюда сервер присылает сообщение.
this.setState({
newMessage:msg
});
}
COMPONENT B
//Компонент должен увидеть что **newMessage** изменилось и добавить его в список.
componentWillReceiveProps(nextProps) {
let list = this.state.MyMessagesList.slice();
list.push(nextProps.newMessage);
this.setState({
MyMessagesList:list
});
}
Судя по коду, вы каждый раз перезаписываете newMessage, чтобы получилась такая строка, нужно делать конкатенацию строк:
this.setState({ newMessage: this.state.newMessage + ' ' + i })
UPD: Извиняюсь, неверно написал, судя по документации:
setState() does not immediately mutate this.state but creates a pending state transition. Accessing this.state after calling this method can potentially return the existing value. There is no guarantee of synchronous operation of calls to setState and calls may be batched for performance gains.
Нельзя вызывать setState в цикле. Если они вызываются один за другим, то они группируются.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Здравствуйте! На работе нужно собрать xlsx файл по макету "Табель учета рабочего времени", вот ссылка на пример: pptru/rabochee-vremia/zapolnenie-tabelya Изучал...
Допилила прогресс-бар для прокруткиНо работает он кривовато