React Router 嵌套

React Router nesting

我正在尝试在 React 路由器中使用嵌套路由。但我的嵌套 routig 不工作。如果那有所不同,我正在使用 Typescript。

//This is working
<Route exact path={path} component={StudentList}></Route>
//This is not working
<Route path={`${path}/:id`} component={StudentComponent}></Route>

我有一个名为 StudentModule 的模块。在模块 a 中,当我路由到时,有两条类似上面的路由 /students/1 没有渲染

我在 CodeSandbox 上创建了一个示例应用程序 https://codesandbox.io/s/vibrant-pasteur-n1eq7

要查看问题所在,请在菜单中导航至学生,然后单击学生。它需要渲染 StudentComponent 并在屏幕上写入 Student works

请帮我看看我的代码有什么问题吗?

在组件 StudentModule 中,请声明变量 id,我想你错过了它,字符串文字将 id 理解为一般字符串。 并传递 url 之类的

<Route exact path={`${path}/${id}`} component={StudentComponent}></Route>

在下面找到更新的代码:

import React from "react";
import { useEffect } from "react";
import { Route, Switch, useRouteMatch } from "react-router-dom";
import StudentComponent from "./Student";
import StudentList from "./StudentList";

export default function StudentModule() {
  let { path } = useRouteMatch();
let id = 1;
  useEffect(() => {
    console.log(path);
  });
  return (
    <Switch>
      <Route exact path={path} component={StudentList}></Route>
      <Route exact path={`${path}/${id}`} component={StudentComponent}></Route>
    </Switch>
  );
}

尝试一下,希望这会有所帮助。

在你的主路由器上,你声明了

  <Route exact path="/students" component={StudentModule} />

因为您一方面将路径设置为 exact,而不是将路径声明为 students*,而导航到 students/1,您没有进入 [=14] =] 完全包含子路由器。