Проблема в том, что это недопустимый JSX.
Невозможно отобразить открывающий тег <Carousel.Item>
без закрывающего тега как часть того же выражения.Понятно, что вы пытаетесь сделать здесь, но это не сработает, потому что JSX-компилятор не может «знать», что закрывающий тег будет когда-либо отображаться, потому что это зависит от children
.У вас есть для отображения открывающих и закрывающих тегов как части одного и того же выражения, чтобы JSX мог скомпилировать.
Вероятно, самое чистое - группировать children
вотделите функцию и затем отобразите результат, просто отобразив каждую группу внутри <Carousel.Item></Carousel.Item>
, например:
function groupIntoThrees (children) {
const output = []
let currentGroup = []
children.forEach((child, index) => {
currentGroup.push(child)
if (index % 3 === 2) {
output.push(currentGroup)
currentGroup = []
}
})
return output
}
... later in render method ...
<Carousel className="col-md-7 col-11" indicators="true" controls="false">
{groupIntoThrees(this.props.children).map((group) => (
<Carousel.Item>
<h1>first: {group[0]}</h1>
<h1>middle: {group[1]}</h1>
<h1>last: {group[2]}</h1>
</Carousel.Item>
)}
</Carousel>