Вывод данных в виде таблицы

221
14 февраля 2017, 20:46

Как можно вывести данные из массива по 3 элемента в одну строку в RectJS? Такой должен быть результат вывода:

<div class="Row">
  <div class="col element">1</div>
  <div class="col element">2</div>
  <div class="col element">3</div>
</div>
<div class="Row">
  <div class="col element">4</div>
  <div class="col element">5</div>
  <div class="col element">6</div>
</div>
<div class="Row">
  <div class="col element">7</div>
</div>
Answer 1
class Row extends Component {
    render() {
        const {cells} = this.props
        return (
            <div className="Row">
                {cells.map( (c) =>
                    <div className="col element" key={c.id}>
                        {c.value}
                    </div>
                )}
            </div>
        )
    }
}

class Table extends Component {
    render() {
        const {rows} = this.props
        return (
            <div className='table'>
                {rows.map( (r, k) =>
                    <Row cells={r} key={k} />
                )}
            </div>
        )
    }
}

// Использование
class App extends Component {
    constructor() {
        super();
        this.state = {
            data: [
                [{id: 1, value: 1}, {id: 2, value: 2}],
                [{id: 3, value: 3}]
            ]
        }
    }
    render() {
        return (
            <Table rows={this.state.data}/>
        )
    }
}

P.S.
Если у вас будет статическая таблица, которая никогда не меняется, то в качестве ключа (key) можно использовать индекс элемента в массиве, но если данные в таблицу поступают динамические и могут меняться, то тогда лучше поменять структуру на что-нибудь в таком роде

[{id: 1, value: 1}, {id: 2, value: 2} ... ]

и использовать качестве key id элемента, а не его индекс
Прочитать подробнее можно тут (EN: https://medium.com/@robinpokorny/index-as-a-key-is-an-anti-pattern-e0349aece318#.j9101ib23)

READ ALSO
Стилизация, синхронизация select

Стилизация, синхронизация select

1Нужно стилизовать select, стрелочку я убрал, background линейный вертикальный задал, не могу стрелочку сделать

504
Длина event(событие) в диапазоне(range) Fullcalendar scheduler

Длина event(событие) в диапазоне(range) Fullcalendar scheduler

Здравствуйте, Работаю с Fullcalendar scheduler

346
Поиск значение обьекта в массиве

Поиск значение обьекта в массиве

Есть массив с обьектами

372
Зачем нужны js фреймворки? [требует правки]

Зачем нужны js фреймворки? [требует правки]

Вопрос простойЗачем использовать фреймворки JS когда можно писать на том же jQuery?

459