Tengo algunos datos llamados estaciones, que es una matriz que contiene objetos.
stations : [
{call:'station one',frequency:'000'},
{call:'station two',frequency:'001'}
]
Me gustaría representar un componente de interfaz de usuario para cada posición de la matriz. Hasta ahora puedo escribir
var stationsArr = []
for (var i = 0; i < this.data.stations.length; i++) {
stationsArr.push(
<div className="station">
{this.data}
</div>
)
}
Y luego render
render(){
return (
{stationsArr}
)
}
El problema es que estoy imprimiendo todos los datos. En su lugar, quiero mostrar una clave como, {this.data.call}pero eso no imprime nada.
¿Cómo puedo recorrer estos datos y devolver un nuevo elemento de interfaz de usuario para cada posición de la matriz?
javascript
reactjs
thatgibbyguy
fuente
fuente

stationsArrlugar destationsdentro de larenderfunción.Respuestas:
Puede asignar la lista de estaciones a ReactElements.
Con React> = 16, es posible devolver múltiples elementos del mismo componente sin necesidad de un contenedor de elementos html adicional. Desde 16.2, hay una nueva sintaxis <> para crear fragmentos. Si esto no funciona o no es compatible con su IDE, puede usarlo
<React.Fragment>en su lugar. Entre 16.0 y 16.2, puede usar un polyfill muy simple para fragmentos.Prueba lo siguiente
¡No olvide el
keyatributo!https://jsfiddle.net/69z2wepo/14377/
fuente
renderfunción debe devolver un solo elemento.stations.map((station,index) => { })funciona bien para míTengo una respuesta que podría resultar un poco menos confusa para principiantes como yo. Puede usarlo
mapdentro del método de representación de componentes.fuente
keyapoyo reactjs.org/docs/lists-and-keys.html#keysthis.datapresumiblemente contiene todos los datos, por lo que necesitaría hacer algo como esto:O puede usar
maplas funciones de flecha y si está usando ES6:fuente
return stations;( codepen.io/pawelgrzybek/pen/WZEKWj )Hay un par de formas que se pueden utilizar.
Solución 1
Solucion 2
Por supuesto, también hay otras formas disponibles.
fuente