我一直在读这篇文章:多嵌套路由反应路由器多姆v4和一些喜欢它,我不能让我的情况下工作。
这里有两个repl在尝试文章中描述的每种方法——也许我错过了什么?
如果您可以让这些REPL中的任何一个工作,我可能已经准备好了——但我更喜欢模块化的方法。谢谢你的帮助。
模块化为路线https://codepen.io/anon/pen/XGPKwZ?editors=0010
<Router>
<div className="container">
<ul>
<li><Link to="/">Home</Link></li>
<li><Link to="/about/">About</Link></li>
</ul>
<hr />
<Route exact path="/" component={Home} />
<Route exact path="/about" component={About} />
</div>
</Router>
const Home = ({children, match}) => (
<div>
<h1>Home</h1>
<p>This is the Home Page</p>
<li><Link to="/page2">page2</Link></li>
<li><Link to="/page3">page3</Link></li>
<hr />
<Route path={match.path} component={Page1} />
<Route path={`${match.path}/page2`} component={Page2} />
<Route path={`${match.path}/page3`} component={Page3} />
</div>
)
const About = ({children, match}) =>(
<div>
<h1>About</h1>
<p>This is about</p>
<li><Link to="/about/page5">page5</Link></li>
<li><Link to="/about/page6">page6</Link></li>
<hr />
<Route path='/about/' component={Page4} />
<Route exact path='/about/page5' component={Page5} />
<Route exact path='/about/page6' component={Page6} />
</div>
)
航线周围的集装箱https://codepen.io/anon/pen/zbJqXK?editors=0011
<div className="container">
<Router>
<Switch>
<ul>
<li><Link to="/">Home</Link></li>
<li><Link to="/about/">About</Link></li>
</ul>
<Home>
<Route component={({ match }) =>
<div>
<Route exact path='/' component={Page1} />
<Route path='/page2' component={Page2} />
<Route path='/page3' component={Page3} />
</div>
}/>
</Home>
<About>
<Route component={({ match }) =>
<div>
<Route path='/about/' component={Page4} />
<Route path='/about/page5' component={Page5} />
<Route path='/about/page6' component={Page6} />
</div>
}/>
</About>
</Switch>
</Router>
</div>
我有许多页的实例w/Subpage.我可以得到一个嵌套布局的工作方式,但当我试图添加作为一个兄弟姐妹下的交换机我得到当我试图访问RouteC.如果我在访问RouteA时切换OOP。
这个Repl是一个工作解决方案:https://codepen.io/anon/pen/ZPMBqY?editors=0010
有两个问题主要围绕着理解开关的思想。它从最大的特异性到最小的特异性。
问题1)将根路径设置为最后一个,这是最不具体的
问题2)确保家长的“精确”为假
<Switch>
<Route path="/about" component={About} />
<Route path="/" component={Home} />
</Switch>
问题3)使用模块内的开关
// Home
<Switch>
<Route exact path='/' component={Page1} />
<Route exact path='/page2' component={Page2} />
<Route exact path='/page3' component={Page3} />
</Switch>
// About
<Switch>
<Route path='/about/page5' component={Page5} />
<Route path='/about/page6' component={Page6} />
<Route path='/about/' component={Page4} />
</Switch>
我有一个名为Dashboard的父组件,它被呈现为路由,如下所示: 我试着嘲笑每个人在嵌套路由上的解决方案,但我似乎无法解决我的问题。
我的目标是让http://mydomain/route1呈现React组件Component1,让http://mydomain/route2呈现component2。因此,我认为编写如下路线是很自然的: http://mydomain/route1按预期工作,但http://mydomain/route2反而呈现Component1。 然后我读了这个问题,并将路线改为:
问题内容: 尝试执行以下操作,但不起作用。 正如文档所述,Switch元素内仅允许Route和Redirect元素。如何在不显式地将HomePage和UserPage包裹在App中或没有将错误页面包裹在App中的情况下使其工作? 问题答案: 当我开始开发“通用React应用”时,第一页的加载是通过服务器端渲染完成的,但是我也遇到了类似的问题,因为React- Router刚刚更新到4.0。您应该考
希望这有一个简单的答案,但我没有发现其他人问这个问题:我只是试图创建一个路由层次结构,其中一个路由(在本例中为登录页面)位于包装器之外,而所有其他路由都位于所述包装器内(具有标头/侧边栏/等)。我正在使用react 16.0.0 react-router-dom 4.2.2,我徒劳地尝试让事情工作是 但显然,这只是在登录下方呈现应用程序组件,如果我将应用程序组件嵌套在Switch中,则结果相同。非
如果我将路由折叠起来,这样看起来就像: 工作很好。我嵌套的原因是因为我将在“dashboard”下有多个子项,并且希望它们都在URL中以为前缀。
我在想这样的事情: 前台有一个不同的布局和风格与管理区域。所以在frontpage中的路由是home、about等等,其中一个应该是子路由。 /home应该呈现到Frontpage组件中,而/admin/home应该呈现在后端组件中。 最终解决方案: 这是我现在使用的最终解决方案。这个例子也像传统的404页面一样有一个全局错误组件。