【问题标题】:React-Router: Nested route not rendering componentReact-Router:嵌套路由不渲染组件
【发布时间】:2021-08-13 10:26:18
【问题描述】:

这是问题的简化再现:具有嵌套 URL 的子级不呈现。

我的文件结构基本上是这样的:

-App
 --Home
 --Pageone
  ---Childone

我可以从App 渲染HomePageone,然后我可以分别从PageoneHome 渲染HomePageone,但我无法从其“父级”渲染Childone页面'Pageone。我不太确定做错了什么。

代码分享在下面,这个sandbox

App.jsx

import { BrowserRouter, Switch, Route } from "react-router-dom";
import Pageone from "./Pageone";
import Home from "./Home";

export default function App() {
  return (
    <BrowserRouter>
      <Switch>
        <Route exact path="/">
          <Home />
        </Route>
        <Route exact path="/pageone">
          <Pageone />
        </Route>
      </Switch>
    </BrowserRouter>
  );
}

Home.jsx

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

const Home = () => {
  return (
    <div>
      <p>This is HOME!</p>
      <Link to="/pageone">Pageone</Link>
    </div>
  );
};

export default Home;

Pageone.jsx

import { Link, Route, useRouteMatch } from "react-router-dom";
import Childone from "./Childone";

const Pageone = () => {
  const { path, url } = useRouteMatch();
  return (
    <div>
      <Route exact path={path}>
        <PageoneContent url={url} />
      </Route>
      <Route exact path={path + "/childone"}>
        <Childone />
      </Route>
    </div>
  );
};

const PageoneContent = (props) => {
  return (
    <div>
      <p>This is pageone!</p>
      <Link to="/">Go back Home</Link>
      <br />
      <Link to={props.url + "/childone"}>Go to Child One</Link>
    </div>
  );
};

export default Pageone;

Childone.jsx

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

const Childone = () => {
  return (
    <div>
      <p>This is Child one!</p>
      <Link to="/">Go back Home</Link>
    </div>
  );
};

export default Childone;

【问题讨论】:

    标签: javascript reactjs react-router nested-urls


    【解决方案1】:

    据我所知,您需要为路由使用另一个 Switch,否则 react 将不知道如何匹配该路由路径。

    <div>
      <Route exact path={path}>
    

    应该是:

    <Switch>
      <Route exact path={path}>
    

    【讨论】:

    • 这似乎不起作用。 Childone 组件似乎仍未呈现。
    • 我给你的是答案,如果还是不行,那是因为你的路径不正确之类的。
    猜你喜欢
    • 2017-06-07
    • 2017-11-15
    • 2022-01-13
    • 1970-01-01
    • 2018-06-06
    • 2021-12-28
    • 2020-05-24
    相关资源
    最近更新 更多