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
。有点动态。