JSX сопоставляет только первый объект в массиве

Мне интересно, как визуализировать только первый объект в массиве, используя .map в JSX.

{this.state.data.map(data =>
    <span className="fooBar">
        <a href={data.foo}>{data.bar}</a>
    </span>
)}

Спасибо!

3 ответа

Решение

Самое простое решение - просто не использовать .map совсем!

<span className="fooBar">
    <a href={this.state.data[0].foo}>{this.state.data[0].bar}</a>
</span>

.map всегда будет проходить по каждому объекту в массиве - нет способа вырваться из него рано.

Это решение работает правильно.

      {data.map((data, i) =>
    <span className="fooBar">
        <a href={data.foo}>{data.bar}</a>
    </span>
)[0]}

Карта предназначена для вызова каждого элемента в массиве с применением преобразования.

Если вы просто хотите визуализировать первый, вам лучше либо явно вызвать первый элемент this.state.data[0], либо использовать библиотеку, которая поддерживает такой метод, как head.

Пример Лодаша

const link = _.head(this.state.data);
<span className="fooBar">
  <a href={link.href}>{link.title}</a>
</span>
Другие вопросы по тегам