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
stationsArr
lugar destations
dentro de larender
funció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
key
atributo!https://jsfiddle.net/69z2wepo/14377/
fuente
render
funció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
map
dentro del método de representación de componentes.fuente
key
apoyo reactjs.org/docs/lists-and-keys.html#keysthis.data
presumiblemente contiene todos los datos, por lo que necesitaría hacer algo como esto:O puede usar
map
las 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