/src
|-- /components
|   |-- /signin
|       |-- SignIn.js
|       |-- /home
|           |-- Home.js
|
|           |-- /dashboard
|               |-- Dashboard.js
|    |-- /assignee
|-- /App.js
|-- /index.js

正如你所看到的,我想分为2部分(签名(adimin部分),受让人(用户部分)). 我正在使用路由进行登录和受让人 我还想使用路由的主页,显示仪表板和其他网页.我该怎么做

function App() {
  return (
    <Router>
      <div className="maindiv">
        <Routes>
          <Route path="/" element={<SignIn />} />
          <Route path="/assignment" element={<AssigneePage />} />
        </Routes>
      </div>
    </Router>
  );
}
function Home() {
  return (
    <div>
      <Container className="content">
        <div className="side-nav">
          <Nav />
        </div>
        <div className="main-content">
          <Routes>
            <Route path="/dashboard" element={<Dashboard />} />
            <Route path="/review" element={<Review />} />
          </Routes>
        </div>
      </Container>
    </div>
  );
}

Home是堆叠内注册

当我try "http://localhost:3000/dashboard"时,它给出以下错误:

History.ts:501没有与位置"/Dashboard"匹配的路由"`

推荐答案

如果在"/signin"上呈现的Signin组件呈现106个路由,例如,Signin呈现另一个RoutesRoute个组件的集合,则父路由应指定尾随通配符"*"匹配器或SPLAT,以便可以匹配和呈现所有后代路由.

给出您的代码/路由 struct

/src
|-- /components
|   |-- /signin
|       |-- SignIn.js
|       |-- /home
|           |-- Home.js
|
|           |-- /dashboard
|               |-- Dashboard.js
|    |-- /assignee
|-- /App.js
|-- /index.js

希望我已经正确理解了您的路由组织.

示例:

function App() {
  return (
    <Router>
      <div className="maindiv">
        <Routes>
          <Route path="/*" element={<SignIn />} />
          <Route path="/assignment" element={<AssigneePage />} />
        </Routes>
      </div>
    </Router>
  );
}

由于Home也会呈现派生路由,因此Signin中的父路由也需要附加路由匹配器.

const SignIn = () => {
  ...

  return (
    ...
    <Routes>
      <Route
        path="/home/*"     // <-- "/signin/home"
        element={<Home />}
      />
    </Routes>
    ...
  );
}
function Home() {
  return (
    <div>
      <Container className="content">
        <div className="side-nav">
          <Nav />
        </div>
        <div className="main-content">
          <Routes>
            <Route
              path="/dashboard"       // <-- "/signin/home/dashboard"
              element={<Dashboard />}
            />
            <Route
              path="/review"          // <-- "/signin/home/review"
              element={<Review />}
            />
          </Routes>
        </div>
      </Container>
    </div>
  );
}

有关详细信息,请参阅route splats.

Javascript相关问答推荐

当没有固定间隔时,是否可以在d3.js中进行画笔捕捉?

Math.random超出了最大调用堆栈

IOS(React Native)中未找到模块SquareReaderSDK

在Phaser中查找哪个物体处于碰撞中

我想做一个程序,计算字符串中所有单词的数量

如何通过在提交时工作的函数显示dom元素?

确定MutationRecord中removedNodes的索引

如何判断属于多个元素的属性是否具有多个值之一

如何用显示网格平滑地将元素从一个地方移动到另一个地方?

未捕获错误:在注销后重定向到/login页面时找不到匹配的路由

如何在Obsidian dataview中创建进度条

我们如何从一个行动中分派行动

在286之后恢复轮询

映射类型定义,其中值对应于键

Jest toHaveBeenNthCalledWith返回当前设置的变量值,而不是调用时的值

为什么云存储中的文件不能公开使用?

Phaser3 preFX addGlow不支持zoom

如何找到带有特定文本和测试ID的div?

Clip-Path在网页浏览器(Mozilla、Edge、Chrome)上不能正常工作,但在预览版Visual Code Studio HTML、CSS、JS上却能很好地工作

Pevent触发material 用户界面数据网格中的自动保存