在此代码中,Return声明根据当前迭代对象的第一个元素属性创建一个HTML元素.数组中的每个对象都可以拥有一个子array.如果存在这样的数组,则应该将这些子数组作为HTML元素附加到同一对象中的元素.如果它没有子数组,则应该简单地将它们附加为单个元素.子数组中的每个元素都可能包含另一组子元素.这个循环无限地持续.
我try 创建一个函数,该函数通过循环调用自己来对子元素们执行相同的任务.然而,子HTML元素不会附加到其父元素.我无法在我的代码中指出问题,我需要您的帮助.
EXAMPLE ARRAY:如您所见,索引0有一个子数组,我们需要映射这些数组并将其作为子数组附加到其父元素(即数组[0].Element).该子数组的每个元素也有子数组,因此我们需要将所有这些元素作为子元素再次附加到其父元素,以此类推.第二个元素没有子数组,因此只需创建一个单独的元素即可.
export const array = [
{
element: 'div',
children: [
{
element: 'div',
children: [
{
element: 'div',
},
{
element: 'div',
},
{
element: 'div',
}
]
},
{
element: 'div',
children: [
{
element: 'div',
children: [
{
element: 'div'
},
{
element: 'div'
}
]
}
]
}
]
},
{
element: 'div'
}
]
FUNCTION:
const renderChildren = (children) => {
if (!children || children.length === 0) {
return null;
};
return children.map((child, index) => {
if (child.children && child.children.length > 0) {
return (
<child.element key={index}>
{renderChildren(child.children)}
</child.element>
);
} else {
return <child.element key={index} />;
}
});
};
RETURN:
return (
array.map((e, i) => {
return (
<e.element key={i}>
{renderChildren(e.element.children)}
</e.element>
);
})
);