Итак, у меня возникла эта проблема, когда я получаю ответ от моего бэкэнда и анализирую его в 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 дает мне этот ответ
Пока все хорошо, это 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, которая, когда у меня там был интерфейс, испортилась.