dkpage
@dkpage
Учусь

Как обойти вложенный массив объектов и вывести объекты как дерево?

Есть массив объектов вида:

const array = [
    {
      path: '/searchCars/*',
      element: 'qwe',
      children: [
        {
          path: '/Cars',
          element: 'qwe',
          visible: true
        },
        {
          path: '/Cars/:id',
          element: 'qwe',
          visible: true
        }
      ],
      visible: true
    },
    {
      path: '/about',
      element: 'qwe',
      visible: true
    },
    {
      path: '/contact',
      element: 'qwe',
      visible: true
    }
  ]


Этот массив будет генерить роуты v6 версии.
Знаю что есть хук useRoutes, который как раз и делает это, но как тогда задавать доп параметры типа visible: true что бы был такой роут я не понимаю.
По этому пытаюсь сделать сам такой хук для полного контроля.
Получается где в объектах есть children должен делать вложенность роутов типа:

<Route path="searchCars/*" element={<SearchCars />}>
  <Route path="Cars" element={<Cars />}>
  <Route path="Cars/:id" element={<CarsId />}>
</Route>


Как обойти вложенный массив объектов и вывести объекты как дерево?
  • Вопрос задан
  • 196 просмотров
Решения вопроса 1
szQocks
@szQocks
const recursy = (item) => {
   if(item.children){
      return <Route path={item.path} element={item.element}>{item.children.map(recursy)}</Route>;
    }
    
    return <Route path={item.path} element={item.element} />;
  };


array.map(recursy)


С ключами сам разберешься, и убери строки за место компонентов, строки на сколько я знаю в jsx не компоненты
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы