Сетка может иметь Grid.Row
, и она должна иметь Grid.Column
.
Вы определили, что ваша сетка имеет 2 столбца;это должно иметь ваше дерево компонентов для первых 3 уровней выглядит примерно так:
Grid
---- Grid.Row
--------- Grid.Column
(GridColumn # 1)
--------- Grid.Column
(GridColumn # 2)
GridColumn # 1 будет содержать набор данных, содержащихся в this.state.columns
и GridColumn# 2 будет содержать вторую половину.
Вы можете получить половину для GridColumn # 1, разрезав массив до половины его длины и от половины его длины для GridColumn # 2.
Обратите внимание, что вам нужно настроить это для случаев, когда длина массива для this.state.columns
нечетна.(в приведенном ниже примере я использовал Javascript для преобразования чисел с плавающей запятой в целое)
Вот один из способов реализовать это;это могло бы извлечь выгоду из некоторого рефакторинга.
renderCheckboxColumns() {
const { columns } = this.state
const leftColumns = columns.slice(0, (columns.length + 1 )/ 2).map(
data =>
<Grid.Row>
<Grid.Column>{data}</Grid.Column>
</Grid.Row>
)
const rightColumns = columns.slice((columns.length + 1)/ 2).map(
data =>
<Grid.Row>
<Grid.Column>{data}</Grid.Column>
</Grid.Row>
)
return (
<Grid.Row>
<Grid.Column>
{leftColumns}
</Grid.Column>
<Grid.Column>
{rightColumns}
</Grid.Column>
</Grid.Row>
);
}
render() {
return (
<Grid stackable columns={2}>
{this.renderCheckboxColumns()}
</Grid>
);
}