【问题标题】:React Router pathes反应路由器路径
【发布时间】:2022-01-17 08:25:35
【问题描述】:

App 组件包含导航栏。 页面组件包含 main。 想法 - 当 url 为 'localhost:3000/authentication' 时一起显示 App 组件和页面组件 但是当我在这个 url 上时 - 它只显示导航栏。

ReactDOM.render(
  <BrowserRouter>
    <Routes>
      <Route path="/" element={<App />}>
        <Route path="authentication" element={<Authentication />} />
      </Route>
    </Routes>
  </BrowserRouter>,

  document.getElementById("root")

);

但是当我在不嵌套的情况下执行此操作时,它会在“/”url 上显示 App,在“auth”url 上显示 Auth:

ReactDOM.render(
  <BrowserRouter>
    <Routes>
      <Route path="/" element={<App />}/ >
      <Route path="authentication" element={<Authentication />} />
    </Routes>
  </BrowserRouter>,

  document.getElementById("root")

第一个例子应该有效,但他没有。使用 useNavigate

【问题讨论】:

    标签: reactjs react-router react-router-dom


    【解决方案1】:

    App 组件还应该为嵌套的Route 组件渲染一个Outlet 组件。

    Outlet

    应该在父路由元素中使用&lt;Outlet&gt; 来呈现它们的 子路由元素。这允许嵌套的 UI 在孩子时显示 路线被渲染。如果父路由完全匹配,它将 如果没有索引路由,则渲染子索引路由或不渲染。

    例子:

    import { Outlet } from 'react-router-dom';
    
    const App = () => (
      <>
        <Navbar />
        <Outlet /> // <-- nested routes render here
      </>
    );
    

    ...

    ReactDOM.render(
      <BrowserRouter>
        <Routes>
          <Route path="/" element={<App />}>
            <Route path="authentication" element={<Authentication />} />
          </Route>
        </Routes>
      </BrowserRouter>,
      document.getElementById("root")
    );
    

    【讨论】:

    • 谢谢,很有帮助!
    • @DannyMcCormick 欢迎您!不要忘记,您还可以投票支持您在 stackoverflow 上找到的有用和/或有用的问题、答案和 cmets。干杯,祝你好运!
    猜你喜欢
    • 2019-08-03
    • 1970-01-01
    • 2020-08-22
    • 2018-05-16
    • 2017-04-05
    • 2018-01-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多