setState из объекта json дает неопределенное значение [React] - PullRequest
0 голосов
/ 12 ноября 2018

Итак, у меня возникла эта проблема, когда я получаю ответ от моего бэкэнда и анализирую его в json, а затем вызываю мою функцию set следующим образом

try{
    const leaderboardInfo: LeaderboardState = JSON.parse(response);
    this.onLeaderboardStateUpdate(leaderboardInfo);
    console.log(leaderboardInfo);
}
catch(e){
    console.log(`Failed to convert: ${response} into a JS object`);
}

И console.log дает мне этот ответ

enter image description here

Пока все хорошо, это LeaderboardConfig, который я хочу использовать для установки состояния.

Моя setState функция является простой

onLeaderboardStateUpdate(state: LeaderboardState): void
{
    this.setState({leaderboardState: state})
}

и мое состояние выглядит так

this.state = {
    leaderboardState: {LeaderboardId: 0,LeaderboardName:"",StartDate:"",EndDate: ""}
};

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

для вашей информации. LeaderboardState - это интерфейс, который выглядит следующим образом.

export interface LeaderboardState {
    LeaderboardId: number
    LeaderboardName: string
    StartDate: string
    EndDate: string
}

То, что сказал Джай, заставило меня решить эту проблему, я должен был изменить попытку на этот

try{
    const leaderboardInfo = JSON.parse(response);
    this.onLeaderboardStateUpdate(leaderboardInfo.LeaderboardConfig[0]);
    console.log(leaderboardInfo);
        }
        catch(e)
        {
            console.log(`Failed to convert: ${response} into a JS object`);
        }

Удаление интерфейса LeaderboardState здесь и переход к конфигурации LeaderBoardConfiguration, которая, когда у меня там был интерфейс, испортилась.

1 Ответ

0 голосов
/ 12 ноября 2018

Полагаю, вам нужно отправить объект вместо массива:

this.onLeaderboardStateUpdate(leaderboardInfo[0]); 
// [0] will extract the object inside array.-^^^
...