@Mirrrta

Как сформировать хлебные крошки?

const routes = [
  {
    title: 'Новости',
    url: '/news',
  },
  {
    title: '',
    url: '/news/:id',
  },
  {
    title: 'Комментарии',
    url: '/news/:id/comments',
  },
  {
    title: 'Пользователи',
    url: '/users',
  },
  {
    title: '',
    url: '/users/:userId',
  },
];

const location = useLocation();

В location.pathname получаю текущий url. Нужно сформировать массив, если в location.pathname будет, к примеру, "/news/1234/comments", то массив должен получиться такого вида:

[
 {
    title: 'Новости',
    url: '/news',
  },
  {
    title: '',
    url: '/news/1234',
  },
  {
    title: 'Комментарии',
    url: '/news/1234/comments',
  },
]
  • Вопрос задан
  • 115 просмотров
Решения вопроса 1
0xD34F
@0xD34F Куратор тега JavaScript
pathname
  .split(/(?<=.)(?=\/)/)
  .map((n, i, a) => a.slice(0, i + 1).join(''))
  .map(n => ({
    title: routes.find(r => RegExp(`^${r.url.replace(/:[^\/]+/g, '[^\/]+')}$`).test(n))?.title ?? '',
    url: n,
  }))
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы