State of React Component, неправильный порядок объектов в массиве из ответа

Подписка работает асинхронно. Так что это нормально, что ваш console.log () печатает, undefined ', поскольку console.log () обрабатывается задолго до того, как подписка возвращает значение.

data.subscribe(result => {
     this.data = result;
     console.log('this.data: ', this.data);

    // call methods that work with this.data from here
});

Вам нужно вызвать методы, этот процесс

this.data 

, изнутри подписки. Это обычный способ в Угловом. Вы ждете значения внутри подписки и работаете с ней, как только она будет предоставлена.

0
задан Pacxiu 19 January 2019 в 08:22
поделиться

1 ответ

Ну, не видя твой код, мне не о чем продолжать, но, возможно, ты неправильно устанавливаешь состояние. Еще нужно учесть, что this.setState({}) происходит не сразу, а на самом деле асинхронно. Итак, если вы попытаетесь получить доступ к состоянию до того, как оно будет установлено, вы получите старые данные. Вы можете предоставить функцию обратного вызова в качестве второго аргумента для запуска после установки состояния:

const callback = () => {
    console.log(this.state.players);
}

this.setState({
    players: newPlayers
}, callback);
0
ответ дан dbenson24 19 January 2019 в 08:22
поделиться
Другие вопросы по тегам:

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