#javascript #reactjs
#javascript #reactjs
Вопрос:
Я использую шаблон, который отображает меню с предопределенной структурой. У меня есть база данных с некоторыми меню, и я уже извлекаю их. Проблема в том, что мне нужно каким-то образом создать логику для построения предопределенной структуры с помощью меню, которые я получаю из базы данных. Вот пример того, что я пытаюсь объяснить:
export const MainNav = [
{
icon: "pe-7s-rocket",
name: "Dashboards",
content: [
{
name: "Analytics",
url: "#/dashboards/analytics",
},
{
name: "Commerce",
content: [
{
name: "Blabla",
url: "#/dashboards/commerce",
},
{
name: "Sales",
url: "#/dashboards/sales",
},
]
},
],
{
name: "Minimal",
content: [
{
name: "Variation 1",
url: "#/dashboards/minimal-dashboard-1",
},
{
name: "Variation 2",
url: "#/dashboards/minimal-dashboard-2",
},
],
},
{
name: "CRM",
url: "#/dashboards/crm",
},
];
По сути, это массив объектов с вложенными массивами / объектами.
Мне действительно нужно какое-то руководство, я думаю, мне нужно использовать рекурсию, но я не знаю как. По сути, подменю должно будет находиться внутри свойства содержимого их родительского объекта.
Комментарии:
1. может быть, ypu также добавляет данные из базы данных, и вы пытаетесь.
Ответ №1:
Поскольку content
ключ всегда является ключом, который потенциально имеет дочерние элементы, проверьте его длину и добавьте вложенный цикл, если он содержит более 1 дочернего элемента.
for (let i = 0; i < MainNav.length; i ) {
let parent = MainNav[i];
// create parent nav element here, accessing it's properties i.e. parent.name
if (parent.content) { //so you don't get reference errors
if (parent.content.length > 1) {
for (let v = 0; v < parent.content.length; v ) {
let nestedChild = parent.content[v];
// append child nav elements here
}
}
}
}