为什么组件无法在嵌套路由中加载反应

问题描述

在这里,我想将ShowIt组件作为嵌套路线加载,但它不起作用,我的意思是当我单击链接时,我转到了该路线,但ShowIt组件(Hello World)没有加载,我真的需要解决这个问题
请帮助我

    import React from 'react';
import {
  browserRouter as Router,Switch,Route,Link
} from 'react-router-dom';

const ShowIt = <div>Hello world</div>;

const Links = (
  <div>
    <Link to="news/components">Go to Components</Link>
    <br/>
    <Link to="news/states-vs-props">Go to states vs props</Link>
  </div>
);

const News = () => {
  return (
    <div>
      {
        Links
      }
      <Router>
        <Switch>
          <Route path="news/:id">
            <ShowIt />
          </Route>
        </Switch>
      </Router>
    </div>
  );
};

export default News;

解决方法

您不应该在<Link>之外使用<Router>。这样做:

<Router>
  {Links}
  <Switch>
    <Route path="/news/:id">
      <ShowIt />
    </Route>
  </Switch>
</Router>

您的代码中还有其他几个问题:

  1. 使ShowIt是一个React组件:
const ShowIt = () => <div>Hello world</div>;
  1. 使用/some-route代替some-route
<Link to="/news/components">Go to Components</Link>

然后,访问id组件中的ShowIt

import { useParams } from "react-router-dom";
// ...
const { id } = useParams<{ id: string }>();