直接到基础嵌套反应路线

Direct to base nested react route

我需要一个 link 将我引导至基本嵌套路线,例如我在仪表板 UI 中有 URL“app/dashboard”我想要一个 link,它将引导我到嵌套的基础 URL,即“app/dashboard”。当我在 'to' 属性中使用“/”时,它会将我定向到根目录“app”。

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>

如何将“主页”link 指向“app/dashboard”?

使用"." 作为link 目标来定位当前“目录”路径"/dashboard"。为此 link 添加 end 道具,因此它仅在路径以 link 所定位的路径结束时才处于活动状态,即 "/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>

你没有定义 /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 的文档 这很容易 祝你好运!!!