我正在构建一个小型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>
);

如您所见,我在仪表板组件中得到了一些嵌套的路由,在这里,我使用索引属性将摘要组件设置为默认匹配.我的仪表板组件如下所示:

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>
  
  );
}

当我试图使用nav从Link to="/"访问摘要组件时,我的问题来了,它不是呈现摘要组件,而是呈现主组件.我也try 过Link to="dashboard",但url最终像dashboard/dashboard一样,不起作用.is there any way to access the Summary component from using Link to?

推荐答案

Issue

问题是,以"/"个字符开头的路径被视为绝对路径.这就是为什么"摘要"链接一直链接回"/",而不是父路径"/dashboard".

Solution

您可以使用"."作为父路径的目标,如果用户位于"/dashboard/estadisticas""/dashboard/inventario"路径上,则使用"/dashboard".

示例:

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相关问答推荐

MUImaterial -ui-如何将文本字段和 Select 分组?

有正确的方法来设置我的金牛座应用程序的图标吗?

如何使用next.js以DOM为目标在映射中使用Ref

如何在取数后添加新数据,并在页面上保存旧数据?

如何在单击行中的图标时避免选中ionic 复选框?

无法将react 路由状态从路由传递给子组件

这两个子元素在Reaction Native中使用的有什么不同?

无法使用Reaction日期选取器和Next.js设置初始日期

找不到名称setCometChat

如何优化 React 应用程序的性能?

useMemo 依赖项的行为

当`useSelector`回调中的属性值更新时,将会使用更新后的值吗?

React - 错误边界未捕获错误

使用 react-markdown 组件时 Tailwind CSS 的问题

如何在 React 中使用 debounce hooks

从一个获取 axios 请求(ReactJS)中删除默认参数

如何从其他组件访问 useQuery refetch 方法?

如何在 Reactjs 中判断受保护路由上的用户角色?

调用函数以获取数据并在数据到达时导航到链接

React Router 6,一次处理多个搜索参数