2017-02-16 1 views
1

Я хочу выполнить нижеследующую рекурсивную функцию, проблема ul Поскольку, когда функция вызывается, я нажимаю тег ul и в конце forEach Я закрываю его. Если я изменил outputArray.push(<ul>) с закрытием </ul>, тогда он отлично работает, но это не послужит моей цели.Элемент Push без закрывающей метки JSX

Все вокруг?

Примечание: Это рекурсивная функция.

function flatten(data, outputArray) { 
 
     outputArray.push(<ul>) 
 
     data.forEach(function (asset){ 
 
      if(asset.children.length) { 
 
       outputArray.push(<li><button onClick={_ => this.appendAssets(asset.name)}>{asset.name}</button></li>); 
 
       flatten(asset.children, outputArray); 
 
      } 
 
      else{ 
 
       outputArray.push(<li><button onClick={_ => this.appendAssets(asset.name)}>{asset.name}</button></li>); 
 
      } 
 
     }); 
 
     outputArray.push(</ul>) 
 
    }

+0

Какой смысл положить их в массив? Чего вы пытаетесь достичь? –

+0

Просто собираюсь отдавать в дом. Просто нужно, чтобы ul и li сохранили структуру. –

+0

Почему бы вам просто не использовать чистый JSX для рендеринга ul и внутри него по массиву в элементы li? –

ответ

0

Рассмотрим следующую структуру

let enclosure = []; 
loop { 
    enclosure.push(jsx); 
} 
return (<ul>{enclosre}</ul>); 
Смежные вопросы