renderItems(game){
if (game.category_id === 2) {
ownedGames.map((owned_game) => {
if (owned_game.game_id === game.game_id) {
renderPriceSection = renderOwned
console.log(owned_game.game_title)
} else {
renderPriceSection = renderPrice
}
})
} else {
renderPriceSection = renderFreeToPlayTitle
}
}
...
return(
{renderPriceSection}
)我试着展示一些标签:Owned,$Price,Free
console.log正在显示所有应该具有Owned标签的正确游戏。
但是,在页面上,Owned标签是,仅显示在owned_games数组中的最后一个项。
知道为什么会这样吗?
编辑:
我删除了renderItems()函数并用以下内容替换了{renderPriceSection}:
{game.category_id === 2 ?
ownedGames.map(owned_game =>
owned_game.game_id === game.game_id ? renderOwned : renderPrice
) :
renderFreeToPlayTitle
}现在,renderOwned和renderPrice被显示为每个项目的owned_games.length时间。
所以,现在我在错误输出的oposite方面:))
发布于 2017-08-25 09:54:26
由于您在每一个其他迭代中修改相同的renderPriceSection引用,所以您并不是在创建一个新的对象。
发布于 2017-08-25 09:49:32
Array.map返回另一个数组。在您的map函数中,似乎没有返回任何内容。而且,还不清楚renderPriceSelection应该是什么。
renderPriceSelection = ownedGames.map((owned_game) => {
if (owned_game.game_id === game.game_id) {
return renderOwned
} else {
return renderPrice
}
})
render {renderPriceSelection}发布于 2017-08-25 09:54:41
从这段代码中还不完全清楚,但在我看来,每次迭代时都重写变量renderPriceSection,这就是为什么renderItems每次返回最后一个元素的原因
https://stackoverflow.com/questions/45878629
复制相似问题