Javascript 无关闭标记JSX的元素推送

Javascript 无关闭标记JSX的元素推送,javascript,reactjs,jsx,Javascript,Reactjs,Jsx,我想执行下面的递归函数,问题是ul,因为调用该函数时,我正在推一个ul标记,在forEach的末尾,我正在关闭它。如果我在关闭时更改输出阵列。按(),则它工作正常,但这不符合我的目的 有办法吗 注意:它是一个递归函数 函数展平(数据、输出阵列){ 输出阵列推送() data.forEach(功能(资产){ if(资产.子项.长度){ outputArray.push(this.appendAssets(asset.name)}>{asset.name}); 扁平化(资产、子项、输出阵列); }

我想执行下面的递归函数,问题是
ul
,因为调用该函数时,我正在推一个
ul
标记,在
forEach
的末尾,我正在关闭它。如果我在关闭
时更改
输出阵列。按(
,则它工作正常,但这不符合我的目的

有办法吗

注意:它是一个递归函数

函数展平(数据、输出阵列){
输出阵列推送(
    ) data.forEach(功能(资产){ if(资产.子项.长度){ outputArray.push(
  • this.appendAssets(asset.name)}>{asset.name}
  • ); 扁平化(资产、子项、输出阵列); } 否则{ outputArray.push(
  • this.appendAssets(asset.name)}>{asset.name}
  • ); } }); 输出阵列推送(

}
考虑以下结构

let enclosure = [];
loop {
   enclosure.push(jsx);
}
return (<ul>{enclosre}</ul>);
let enclosure=[];
环路{
外壳推送(jsx);
}
返回(
    {enclosure}
);
你能做的最好的事情是:

let arr1 = [];
let arr2 = [];
您可以循环并将尽可能多的JSX li推入arr1:

arr1.push(<li>Some content</li>);
arr1.push(
  • 某些内容
  • );
    然后,您可以将arr1的全部内容推入arr2,并用ul标签包装:

    arr2.push(<ul>{arr1}</ul>);
    
    arr2.push(
      {arr1}
    );
    然后简单地渲染并返回它:

    render(){
    return (
    <div>{arr2}</div>
    )
    }
    
    render(){
    返回(
    {arr2}
    )
    }
    

    当您需要生成具有可变行数和列数的网格时,这种方法非常有效。

    将它们放入数组有什么意义?你想实现什么?只是要渲染到dom中。只需要ul和li来保留结构。为什么不使用纯JSX将ul和其中的ul映射到数组中的li元素中呢?根据我收到的数据,会有多个
    ul
    。有点动态。