【发布时间】:2021-09-15 08:40:11
【问题描述】:
编辑:重新编写问题以使其更清晰: 我有这样的数据,
[
{ winrate: '56.67' },
[
{
bout: "Bout 5: Europe's Qualifiers",
wins: '2',
role: 'Alternate'
},
{
pokemon: 'Quagsire',
sprite: 'https://thesilphroad.com/img/pokemon/icons/96x96/195.png'
},
{
pokemon: 'Venusaur',
sprite: 'https://thesilphroad.com/img/pokemon/icons/96x96/3.png'
},
{
pokemon: 'Beedrill',
sprite: 'https://thesilphroad.com/img/pokemon/icons/96x96/15.png'
},
{
pokemon: 'Mawile',
sprite: 'https://thesilphroad.com/img/pokemon/icons/96x96/303.png'
},
{
pokemon: 'Escavalier',
sprite: 'https://thesilphroad.com/img/pokemon/icons/96x96/589.png'
},
{
pokemon: 'Mandibuzz',
sprite: 'https://thesilphroad.com/img/pokemon/icons/96x96/630.png'
}
],
[
{
bout: "Bout 4: Europe's Qualifiers",
wins: '1',
role: 'Alternate'
},
{
pokemon: 'Quagsire',
sprite: 'https://thesilphroad.com/img/pokemon/icons/96x96/195.png'
},
{
pokemon: 'Ninetales_alolan',
sprite: 'https://thesilphroad.com/img/pokemon/icons/96x96/ninetales-alola.png'
},
{
pokemon: 'Beedrill',
sprite: 'https://thesilphroad.com/img/pokemon/icons/96x96/15.png'
},
{
pokemon: 'Sealeo',
sprite: 'https://thesilphroad.com/img/pokemon/icons/96x96/364.png'
},
{
pokemon: 'Jellicent',
sprite: 'https://thesilphroad.com/img/pokemon/icons/96x96/593.png'
},
{
pokemon: 'Venusaur',
sprite: 'https://thesilphroad.com/img/pokemon/icons/96x96/3.png'
}
], ...etc it goes on for a while.
我正在尝试将它映射到这样的反应组件中:
const Teams = ({ teams }) => {
let pokemap = teams.map((team, index) => (
<React.Fragment key={index}>
<br />
<div class="container">
{team.map((pokemon) => (
<React.Fragment key={pokemon.pokemon}>
<br /> <div class="bout">{pokemon.bout}</div>
<div class="child">
<img src={pokemon.sprite} />
<p>{pokemon.pokemon}</p>
</div>
</React.Fragment>
))}
</div>
<br />
</React.Fragment>
));
return (
<div>
{teams.role}
{teams.winrate}
{pokemap}
</div>
);
};
export default Teams;
我得到嵌套 team.map 不是函数的错误,因为在第一个映射之后,嵌套映射只是一个包含一个对象而不是多个数组的数组,但我不知道如何绕过它。
编辑:已修复 :) 这是新组件:
const Teams = ({ teams }) => {
console.log(teams);
let pokemap = teams.slice(1).map((team, index) => (
<React.Fragment key={index}>
<br />{" "}
<div class="container">
<div class="bout">{team[0].bout}</div>{" "}
<div>
Score:
<br />
{team[0].wins && team[0].wins + "-"}
{team[0].wins && 3 - team[0].wins}
</div>
<br />
{Array.isArray(team) &&
team.slice(1).map((pokemon) => (
<React.Fragment key={pokemon.pokemon}>
<div class="child">
<img src={pokemon.sprite} />
<p>{pokemon.pokemon}</p>
</div>
</React.Fragment>
))}
</div>
</React.Fragment>
));
return (
<div>
Win Rate: {teams[0].winrate}%{pokemap}
</div>
);
};
【问题讨论】:
-
尝试添加一个 console.log(teams);在 let pokemap = teams.map((team, index) ...之前,您可以通过这种方式可视化您的团队数组的结构。如果映射是 KO,那么您知道从哪里开始(另外您正在使用 const team = [ ]; 所以团队将是 [[],..] 而不是 [{},..] )
-
我猜停止工作的
map()是嵌套的:team.map((pokemon) => ...)。这是因为teams将是一个对象数组,而不是数组数组,因此team将是一个对象而不是数组。 -
首先添加console.log(teams),这样你就可以确定这个数组的结构了:)
-
添加了 console.log(teams) - 还将阵列上的
const更改为let.. 将更新主帖。 -
@lbsn 是正确的,但我的头很痛,我不知道如何解决它,哈哈。
标签: javascript reactjs