gpt4 book ai didi

reactjs - 如何使用 react 路由器中的链接组件访问嵌套路由中的先前索引路由?

转载 作者:行者123 更新时间:2023-12-05 04:29:32 26 4
gpt4 key购买 nike

我正在构建一个小型 React 应用程序,并且我已经实现了这样的路由:

import React, { lazy } from "react";
import ReactDOM from "react-dom/client";
import { BrowserRouter, Routes, Route } from "react-router-dom";

const App = lazy(() => import("./App"));
const Home = lazy(() => import("./Pages/Home"));
const Registro = lazy(() => import("./Pages/Dashboard"));
const Summary = lazy(() => import("./Pages/Summary"));
const Inventario = lazy(() => import("./Pages/Inventario"));
const Estadisticas = lazy(() => import("./Pages/Estadisticas"));
const Dashboard = lazy(() => import("./Pages/Dashboard"));

ReactDOM.createRoot(document.getElementById("root")!).render(
<React.StrictMode>
<BrowserRouter>
<Routes>
<Route path="/" element={<App />}>
<Route index element={<Home />} />
<Route path="dashboard" element={<Dashboard />}>
<Route index element={<Summary />} />
<Route path="estadisticas" element={<Estadisticas />} />
<Route path="inventario" element={<Inventario />} />
</Route>
</Route>
</Routes>
</BrowserRouter>
</React.StrictMode>
);

如您所见,我的 Dashboard 组件中有一些嵌套路由,其中​​我使用 index 属性将 Summary 组件设置为默认匹配。我的仪表板组件是这样的:

import { Outlet, Link } from "react-router-dom";

export default function Dashboard() {

return (
<div>
<nav>
<ul>
<li><Link to="/">Summary</Link></li>
<li><Link to="estadisticas">Estadisticas</Link></li>
<li><Link to="inventario">Inventario</Link></li>
</ul>
</nav>
<Outlet/>
</div>

);
}

当我尝试使用导航从 Link to="/" 访问 Summary 组件时,我的问题就出现了,它没有呈现 Summary 组件,而是呈现 Home 组件。我也尝试过使用 Link to="dashboard",但 url 最终变成了类似 dashboard/dashboard 的东西,这是行不通的。 有什么方法可以使用“链接到”来访问“摘要”组件吗?

最佳答案

问题

问题在于以 "/" 字符开头的路径被认为是绝对路径。这就是为什么“摘要”链接一直链接回 “/” 而不是父路径 “/dashboard”

解决方案

您可以使用 "." 作为父路径的目标,"/dashboard" 在用户位于 "/dashboard/estadisticas 的情况下""/dashboard/inventario" 路径。

例子:

function Dashboard() {
return (
<div>
<nav>
<ul>
<li>
<Link to=".">Summary</Link>
</li>
<li>
<Link to="estadisticas">Estadisticas</Link>
</li>
<li>
<Link to="inventario">Inventario</Link>
</li>
</ul>
</nav>
<Outlet />
</div>
);
}

抱歉,目前我无法在官方文档中找到此功能,尽管有关于使用 ".." 来“删除父级的一部分”的简短说明小路”。 "..""." 的用途相似。请注意,如果它是 EstadisticasInventario 之一,则将使用 ".." 呈现“上升一个级别”的链接。

关于reactjs - 如何使用 react 路由器中的链接组件访问嵌套路由中的先前索引路由?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72297991/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com