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

Почему в консоли не видно обновлённый state?

Почему console.log внутри componentDidMoun выдает обновлённые данные, а console.log в конце - выдаёт 122? Я не понимаю почему она выдает старые не обновлённые данные, ведь она по событию .onmessage запускается каждые 2 секунды. Буду благодарен за помощь.
constructor(props) {
	super(props);
	this.state = { messages: [122] };
};

componentDidMount() {
	this.connection = new WebSocket('ws://reactchart:8080');
	this.connection.onmessage = responce => { 
		this.setState({
			messages : responce.data
		});
		console.log(this.state.messages);
};
this.connection.onmessage = responce => console.log(this.state.messages);
....
  • Вопрос задан
  • 72 просмотра
Подписаться 1 Средний Комментировать
Помогут разобраться в теме Все курсы
  • Яндекс Практикум
    React-разработчик
    3 месяца
    Далее
  • Merion Academy
    Frontend-разработка на React
    4 месяца
    Далее
  • ProductStar
    React: отточите навыки интерфейсной разработки
    6 недель
    Далее
Решения вопроса 1
@real2210
setState асинхронный метод, используйте колбек что бы после того как состояние изменится иметь актуальные данные

this.setState({
      messages : responce.data
    }, () =>  console.log(this.state.messages));
  ;
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы
ITK academy Нижний Новгород
от 50 000 до 90 000 ₽
IT ATLAS Москва
от 200 000 до 250 000 ₽
ITK academy Казань
от 50 000 до 90 000 ₽