J'ai des données appelées stations qui sont un tableau contenant des objets.
stations : [
{call:'station one',frequency:'000'},
{call:'station two',frequency:'001'}
]
Je voudrais rendre un composant d'interface utilisateur pour chaque position de tableau. Jusqu'ici je peux écrire
var stationsArr = []
for (var i = 0; i < this.data.stations.length; i++) {
stationsArr.push(
<div className="station">
{this.data}
</div>
)
}
Et puis rendre
render(){
return (
{stationsArr}
)
}
Le problème est que j'imprime toutes les données. Je veux plutôt afficher une clé comme {this.data.call}
mais qui n'imprime rien.
Comment puis-je parcourir ces données et renvoyer un nouvel élément d'interface utilisateur pour chaque position du tableau?
javascript
reactjs
thatgibbyguy
la source
la source
stationsArr
au lieu de l'stations
intérieur de larender
fonction.Réponses:
Vous pouvez mapper la liste des stations à ReactElements.
Avec React> = 16, il est possible de renvoyer plusieurs éléments du même composant sans avoir besoin d'un wrapper d'élément html supplémentaire. Depuis 16.2, il existe une nouvelle syntaxe <> pour créer des fragments. Si cela ne fonctionne pas ou n'est pas pris en charge par votre IDE, vous pouvez utiliser à la
<React.Fragment>
place. Entre 16.0 et 16.2, vous pouvez utiliser un polyfill très simple pour les fragments.Essayez ce qui suit
N'oubliez pas l'
key
attribut!https://jsfiddle.net/69z2wepo/14377/
la source
render
fonction doit renvoyer un seul élément.stations.map((station,index) => { })
fonctionne bien pour moiJ'ai une réponse qui pourrait être un peu moins déroutante pour les débutants comme moi. Vous pouvez simplement utiliser
map
dans la méthode de rendu des composants.la source
key
accessoire reactjs.org/docs/lists-and-keys.html#keysthis.data
contient probablement toutes les données, vous devrez donc faire quelque chose comme ceci:Ou vous pouvez utiliser les
map
fonctions fléchées et si vous utilisez ES6:la source
return stations;
( codepen.io/pawelgrzybek/pen/WZEKWj )Il y a quelques moyens qui peuvent être utilisés.
Solution 1
Solution 2
Bien sûr, il existe d'autres moyens également disponibles.
la source