json对象的setState提供了未定义的[反应]

时间:2018-11-12 09:56:34

标签: javascript reactjs undefined setstate

所以我遇到了这个问题,我从后端得到响应并将其解析为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: ""}
};

但是由于某种原因,它给出了undefined,因此似乎无法从我拥有的json对象中设置状态

为了供您参考,

leaderboardState是一个类似于以下的界面。

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

Jai所说的让我解决了这个问题,我不得不将尝试捕获更改为此

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 :(得分:2)

我想您必须发送对象而不是数组:

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