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>
);
})}
添加回答
舉報