У меня есть данные, называемые станциями, которые представляют собой массив, содержащий объекты.
stations : [
{call:'station one',frequency:'000'},
{call:'station two',frequency:'001'}
]
Я хотел бы отобразить компонент пользовательского интерфейса для каждой позиции массива. Пока я могу написать
var stationsArr = []
for (var i = 0; i < this.data.stations.length; i++) {
stationsArr.push(
<div className="station">
{this.data}
</div>
)
}
А затем визуализировать
render(){
return (
{stationsArr}
)
}
Проблема в том, что я распечатываю все данные. Вместо этого я хочу просто показать такой ключ, {this.data.call}
но он ничего не печатает.
Как я могу просмотреть эти данные и вернуть новый элемент пользовательского интерфейса для каждой позиции массива?
javascript
reactjs
тотгибби парень
источник
источник
stationsArr
вместо функцииstations
внутриrender
.Ответы:
Вы можете сопоставить список станций с ReactElements.
С React> = 16 можно возвращать несколько элементов из одного и того же компонента без необходимости в дополнительной оболочке элемента html. Начиная с версии 16.2, появился новый синтаксис <> для создания фрагментов. Если это не работает или не поддерживается вашей IDE, вы можете использовать
<React.Fragment>
вместо него. Между 16.0 и 16.2 вы можете использовать очень простой полифилл для фрагментов.Попробуйте следующее
Не забудьте
key
атрибут!https://jsfiddle.net/69z2wepo/14377/
источник
render
функция должна возвращать один единственный элемент.stations.map((station,index) => { })
отлично работает для меня,У меня есть ответ, который может быть немного менее запутанным для таких новичков, как я. Вы можете просто использовать
map
внутри метода рендеринга компонентов.источник
key
опора responsejs.org/docs/lists-and-keys.html#keysthis.data
предположительно содержит все данные, поэтому вам нужно будет сделать что-то вроде этого:Или вы можете использовать
map
и стрелочные функции, если вы используете ES6:источник
return stations;
( codepen.io/pawelgrzybek/pen/WZEKWj )Есть несколько способов, которые можно использовать.
Решение 1
Решение 2
Конечно, есть и другие способы.
источник