我使用React / Redux,并且解析了我正在接收的查询对象数组。我试图解析的数组包含在它自己的数组中,看起来像这样。
{map: "TheIsland", password: false, raw: {…}, maxplayers: 30, …}players:[{…}]....
阵列"玩家"是我遇到的问题。我收到并显示大部分查询数据都很好,但是当试图在"播放器"上运行.map时爆炸的名字"某些文字的属性,我收到错误,
TypeError: Cannot read property 'map' of undefined
当我的组件安装时,我在构造函数中将player设置为空数组,以便在返回查询之前考虑运行.map。当我在接收它时控制.log,响应,#34;玩家"看起来像这样,
players: Array(3) 0:{name: "Jones", score: 0, time: 1573.2921142578125} 1:{name: "Matt", score: 0, time: 1348.6531982421875} 2:{name: "Skippy", score: 0, time: 285.5899963378906} length:3
我既不能抓住任何玩家信息,也不能抓住阵列长度。
这是我的全部内容。
import React, { Component } from "react";
import { connect } from "react-redux";
import { fetchStatus } from "./../actions";
import "./arkStats.css";
class ArkStats extends Component {
constructor(props) {
super(props);
this.state = {
players: []
};
}
componentDidMount() {
this.props.fetchStatus();
}
renderPlayers() {
return console.log(this.props.status);
<div>
{this.props.status.players.map((player, index) =>
<p key={index}>
Hello, {player.name}!
</p>
)}
</div>
}
render() {
return (
<div>
{this.props.status.name}
{this.props.status.map}
{this.renderPlayers()}
</div>
);
}
}
function mapStateToProps({ status }) {
return { status };
}
export default connect(mapStateToProps, { fetchStatus })(ArkStats);
答案 0 :(得分:0)
地图无法读取玩家因为这是一个带钥匙的对象。如果您查看players:
,您会看到0:{},1:{}等。
如果数据存储方式如下,则应该像这样进行映射。
renderPlayers() {
return Object.keys(players).map((key, index) => {
return(
<p key={ index }> Hello, { players[key].name } </p>
);
});
}