当前位置: 首页 > 知识库问答 >
问题:

在嵌套之外的一个路由上反应路由器Dom

左康安
2023-03-14

希望这有一个简单的答案,但我没有发现其他人问这个问题:我只是试图创建一个路由层次结构,其中一个路由(在本例中为登录页面)位于包装器之外,而所有其他路由都位于所述包装器内(具有标头/侧边栏/等)。我正在使用react 16.0.0 react-router-dom 4.2.2,我徒劳地尝试让事情工作是

import React from 'react';
import { Switch, Route } from 'react-router-dom';
import Wrapper from './components/common/Wrapper';
import App from './components/App';
import HomePage from './components/Home';
import SignInUpPage from './components/SignInUp';
import DistrictsPage from './components/Districts';
import StudioPage from './components/Studio';
import CollectionsPage from './components/Collections';


export default (
  <Wrapper>
    <Route path="/account" component={SignInUpPage} />
    <App>
      <Switch>
        <Route exact path="/" component={HomePage} />
        <Route path="/districts" component={DistrictsPage} />
        <Route path="/studio" component={StudioPage} />
        <Route path="/collections" component={CollectionsPage} />
      </Switch>
    </App>
  </Wrapper>

);

但显然,这只是在登录下方呈现应用程序组件,如果我将应用程序组件嵌套在Switch中,则结果相同。非常感谢您的任何帮助!

共有1个答案

欧阳智志
2023-03-14

仅当 /account 不匹配时,才能呈现应用组件:

<Wrapper>
  <Switch>
    <Route path="/account" component={ SignInUpPage } />
    <Route path="/" component={ App } />
  </Switch>
</Wrapper>

...,然后在应用组件内移动其他路由

App.js

<Switch>
  <Route exact path="/" component={ HomePage } />
  <Route path="/districts" component={ DistrictsPage } />
  <Route path="/studio" component={ StudioPage } />
  <Route path="/collections" component={ CollectionsPage } />
</Switch>

我从您的代码中假设Wrapper是包装所有内容,而App只是包装嵌套的路由。如果我误解了,您可以切换它们。

 类似资料:
  • 我有一个名为Dashboard的父组件,它被呈现为路由,如下所示: 我试着嘲笑每个人在嵌套路由上的解决方案,但我似乎无法解决我的问题。

  • 我的目标是让http://mydomain/route1呈现React组件Component1,让http://mydomain/route2呈现component2。因此,我认为编写如下路线是很自然的: http://mydomain/route1按预期工作,但http://mydomain/route2反而呈现Component1。 然后我读了这个问题,并将路线改为:

  • 我一直在读这篇文章:多嵌套路由反应路由器多姆v4和一些喜欢它,我不能让我的情况下工作。 这里有两个repl在尝试文章中描述的每种方法——也许我错过了什么? 如果您可以让这些REPL中的任何一个工作,我可能已经准备好了——但我更喜欢模块化的方法。谢谢你的帮助。 模块化为路线https://codepen.io/anon/pen/XGPKwZ?editors=0010 航线周围的集装箱https://

  • 问题内容: 尝试执行以下操作,但不起作用。 正如文档所述,Switch元素内仅允许Route和Redirect元素。如何在不显式地将HomePage和UserPage包裹在App中或没有将错误页面包裹在App中的情况下使其工作? 问题答案: 当我开始开发“通用React应用”时,第一页的加载是通过服务器端渲染完成的,但是我也遇到了类似的问题,因为React- Router刚刚更新到4.0。您应该考

  • 我需要多个嵌套路由 我用的是react-router-dom的v4 我有我的 我需要组件渲染成这样 Home组件包含Page1、Page2和Page3组件共有的标题组件,但不存在于Login和About中。 我的js代码是这样读的 我希望登录组件只显示在 /login当我请求 /page1、 /page2、 /page3时,它们应该分别包含主页组件和该页面的内容。 取而代之的是呈现的登录组件,在该

  • 如果我将路由折叠起来,这样看起来就像: 工作很好。我嵌套的原因是因为我将在“dashboard”下有多个子项,并且希望它们都在URL中以为前缀。