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}
)
Ich versuche, einige Etiketten anzuzeigen: Owned
, $Price
, Free
reagieren wird nur das letzte Element in dem Array Anzeige
Die console.log
wird alle richtigen Spiele angezeigt werden, die die Owned
Label haben sollte.
Aber auf der Seite, die Owned
Label ist nur für das letzte Element zeigt sich im owned_games
Array.
Eine Idee, warum das passiert?
Edit:
Ich entfernte die renderItems()
Funktion und ersetzt {renderPriceSection}
mit diesem:
{game.category_id === 2 ?
ownedGames.map(owned_game =>
owned_game.game_id === game.game_id ? renderOwned : renderPrice
) :
renderFreeToPlayTitle
}
Nun ist die renderOwned
und renderPrice
wird für jedes Element wird angezeigt owned_games.length
mal.
So jetzt bin ich auf der gegenüberliegenden Seite der falschen Ausgabe :)))
Das passiert, weil renderPriceSection bei jeder Map-Iteration überschrieben wird. Auch dies ist kein richtiger Weg, um map zu verwenden, map gibt ein Array zurück und wenn Sie zeigen, wie Ihr Array aussieht und was Ihre erwartete Ausgabe ist, können wir vielleicht besser helfen –
Da das Label nur für das letzte Element angezeigt wird, d dachte dasselbe. Dass es es überschreibt. Aber ich kann mir keinen besseren Weg vorstellen, dies zu tun. –
Ich verwende 'map' anstatt einer for-Schleife, denke ich. Ich habe die Frage aktualisiert. –