2017-02-16 2 views
1

Ich möchte die unten rekursive Funktion ausführen, das Problem ist ul Da, wenn die Funktion aufgerufen wird, schiebe ich ein Tag und am Ende forEach Ich schließe es. Incase, wenn ich outputArray.push(<ul>) mit dem schließenden </ul> ändere, dann funktioniert es gut, aber das wird meinem Zweck nicht dienen.Element Push ohne schließendes Tag JSX

Um es herum?

Hinweis: Dies ist eine rekursive Funktion.

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

Was ist der Punkt, um sie in einer Reihe von Putten? Was versuchst du zu erreichen? –

+0

Nur in Dom zu rendern. Brauchen nur die ul und li, um die Struktur zu behalten. –

+0

Warum verwenden Sie nicht einfach reines JSX, um die ul darzustellen und innerhalb der Karte über das Array in li Elemente zu rendern? –

Antwort

0

Betrachten Struktur folgende

let enclosure = []; 
loop { 
    enclosure.push(jsx); 
} 
return (<ul>{enclosre}</ul>); 
Verwandte Themen