Прямой к базовому вложенному маршруту реагирования

Мне нужна ссылка, которая направит меня к базовому вложенному маршруту, например, у меня есть URL-адрес «приложение/панель инструментов» в пользовательском интерфейсе панели инструментов. Я хочу иметь ссылку, которая направит меня к базовому вложенному URL-адресу, который является «приложение /панель приборов". Когда я использую «/» в атрибуте «to», он направляет меня к корневой базе, которой является «приложение».

Index.js

<Routes>
    <Route path = "/" element = {<App />}>
      <Route path = "register" element = {<Register />} />  
    </Route>
    <Route path = "dashboard" element = {<Dashboard />}>
      <Route index element = {<Home />} />
      <Route path = "upload-reciept" element = {<UploadReciept />} />
      <Route path = "upload-details" element = {<UploadDetails />} />
    </Route> 
</Routes>

Dashboard.js

<ul className = "space-y-2">
   <li>
      <NavLink to = "/" className = {({ isActive }) => isActive ? "bg-sky-200 text-sky-700" : "hover:bg-sky-200 hover:text-sky-700"}>
         <HomeIcon className = "h-5 w-5 sm:h-6 sm:w-6"/>
         <span>Home</span>
      </NavLink>
   </li>
   <li>
      <NavLink to = "upload-reciept"  className = {({ isActive }) => isActive ? "bg-sky-200 text-sky-700" : "hover:bg-sky-200 hover:text-sky-700"}>
         <CloudUploadIcon className = "h-5 w-5 sm:h-6 sm:w-6"/>    
         <span>Upload reciept</span>
      </NavLink>
   </li>
   <li>
      <NavLink to = "upload-details"  className = {({ isActive }) => isActive ? "bg-sky-200 text-sky-700" : "hover:bg-sky-200 hover:text-sky-700"}>
         <RefreshIcon className = "h-5 w-5 sm:h-6 sm:w-6" />
         <span>Update details</span>
      </NavLink>
   </li>
</ul>

Как мне направить ссылку «Главная» на «приложение/панель управления»?

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
0
21
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Используйте "." в качестве цели ссылки для нацеливания на текущий путь «каталога» "/dashboard". Добавьте реквизит end для этой ссылки, чтобы он был активен только тогда, когда путь заканчивается путем, на который нацелена ссылка, то есть "/dashboard".

<NavLink
  to = "."
  end // <-- to match path "/dashboard"
  className = {({ isActive }) =>
    isActive
      ? "bg-sky-200 text-sky-700"
      : "hover:bg-sky-200 hover:text-sky-700"
  }
>
  <HomeIcon className = "h-5 w-5 sm:h-6 sm:w-6" />
  <span>Home</span>
</NavLink>

Edit direct-to-base-nested-react-route

Это работает, однако "isActive" всегда верно. Даже если я нажал на другую ссылку.

M_Magz 19.03.2022 06:42

@M_Magz О, тогда вам, вероятно, просто нужно использовать реквизит end на этой корневой ссылке на панель инструментов. Протестирована и обновлена ​​песочница.

Drew Reese 19.03.2022 06:43

Где я могу найти документацию по «конечной» опоре?

M_Magz 19.03.2022 06:52

@M_Magz NavLink Есть небольшая реклама: «Если используется конечная опора, она гарантирует, что этот компонент не сопоставляется как «активный», когда совпадают пути его потомков. Например, для отображения ссылки, которая активна только на веб-сайте. root, а не какие-либо другие URL-адреса, вы можете использовать: <NavLink to = "/" end>Home</NavLink>"

Drew Reese 19.03.2022 07:12

вы не определили маршрут /app ты должен идти на первом этапе вы можете определить вложенный маршрут следующим образом


    <Routes>
         <Route to = "/app" element = {<App/>}>
         <Route to = "dashboard" element = {<Dashboard/>}>
              //other <Route/>
         </Route>
       </Route>
    <Routes>

или вы можете использовать старый способ (до v6) и вы даже можете определить маршрут как жесткий код и определить точный маршрут для реагирования лайк: <Route to = "/where/ever/you/want" {...props} /> для прочего проверьте документ react-router-dom Это очень легко удачи чувак!!!

ОП не сказал, что им нужен "/app" маршрут. Этот ответ не решает проблему OP с использованием ссылки для перехода к маршруту "/dashboard".

Drew Reese 19.03.2022 06:47

Другие вопросы по теме