2 回答
TA贡献2065条经验 获得超14个赞
如果将代码拆分为不同的组件会更好,每个组件负责呈现特定的类别级别。一旦你有了这个场景,也许你应该尝试使用 recursion 来实现它,在我看来这将是最好的解决方案。
const CategoryLevel3 = ({ href, name}) => {
return (
<li className="level-3">
<a href={href}>{name}</a>
</li>
);
};
const CategoryLevel2 = ({ name, href, category = [] }) => {
return (
<li>
<ul className="level-2">
<h4>
<a href={href}>{name}</a>
</h4>
{category.map(({ name, href }) => (
<CategoryLevel3 href={href} name={name} key={name} />
))}
</ul>
</li>
);
};
const CategoryLevel1 = ({ name, href, category = [] }) => {
return (
<ol className="level-1" key={name}>
<h4>
<a href={href}>{name}</a>
</h4>
{category.map(({ name, href, category = [] }) => (
<CategoryLevel2 name={name} href={href} category={category} key={name} />
))}
</ol>
);
};
const Categories = ({ categories = [] }) => {
return (
<Fragment>
{categories.map(({ name, href, category }) => (
<CategoryLevel1 category={category} />
))}
</Fragment>
);
};
TA贡献1891条经验 获得超3个赞
我用这种方法做到了。
{categories.map(({ name, href, category }) => {
return (
<ol className="level-1">
<h4><a href={href}>{name}</a></h4>
{category && category.map(({ name: nameL2, href: hrefL2, category: categoriesL2 }) => {
return (
<li>
<ul className="level-2">
<h4><a href={hrefL2} >{nameL2}</a></h4>
{categoriesL3 &&
categoriesL3.map(({ name: nameL3, href: hrefL3 }) => {
return (
<li className="level-3">
<a href={hrefL3}>{nameL3}</a>
</li>
)
);
})}
</ul>
</li>
)
})}
</ol>
);
})}
添加回答
举报