Вы не должны думать в терминах открытых или закрытых тегов ...
Чтобы достичь вашего результата, я ДО ПРЕОБРАЗОВАНИЯ данных в структуре данных, которая может быть легко отображена, что-то вроде этого:
const elements = [
"first ul:",
"first li",
"second li",
"third li.",
"second ul:",
"first li",
"second li",
"third li.",
"third ul:",
"first li",
"second li",
"third li."
]
const makeUls = elements => {
const uls = {}
let currentUl
elements.forEach(element => {
if ( element.endsWith(":") ) {
uls[element] = []
currentUl = element
} else {
uls[currentUl].push(element)
}
})
return uls
}
Для вызова makeUls
и предоставления плоского массива у вас должна быть карта, подобная этой:
Object {
"first ul:": ["first li", "second li", "third li."],
"second ul:": ["first li", "second li", "third li."],
"third ul:": ["first li", "second li", "third li."]
}
Когда у вас есть такая структура, вы можете легко отрисовать все правильно:
render() {
const uls = makeUls(props.body)
Object.keys(uls).map(ul => (
<ul>
{ uls[ul].map(li => <li>{ li }</li> }
</ul>
))
}
Подумайте, как правильно добавить атрибут key
и все.