Нельзя раздвигать HTML-элементы по частям, например,
arrayEl.push(<div>)
arrayEl.push(</div>)
Вы должны перемещать элементы от начала до конца, например,
arrayEl.push(<div>{children}</div>)
Для этого вам необходимо мгновенно вывести все cols
в row
, как в примере кода ниже.
render() {
const arrayName = ["john", "bob", "joe", "mat", "toto", "tata"];
let rows = [];
let currentCols = [];
for (let i = 0; i < arrayName.length; i++) {
let name = arrayName[i];
currentCols.push(<div className="col" key={i}>{name}</div>);
if ((i+1) % 3 === 0) {
rows.push(<div className="row" key={i}>{currentCols}</div>);
currentCols = [];
}
}
rows.push(currentCols);
return (<div className="container">{rows}</div>)
}
JSFiddle demo
Вместо использования переменной count
я просто использовал переменную i
из вашего цикла и проверил, делится ли (i + 1)
на 3: % 3 === 0
. Если это так, это означает, что у вас уже есть 3 столбца в строке; Мы можем поместить currentCols
в массив rows
и очистить его.