【发布时间】:2017-08-16 12:17:33
【问题描述】:
我需要 react-router-dom 中的多个嵌套路由
我正在使用 react-router-dom 的 v4
我有我的
import { BrowserRouter as Router, Route } from 'react-router-dom';
我需要组件像这样渲染
--- Login
--- Home
--- Page 1
--- Page 2
--- Page 3
--- About
--- etc
Home 组件包含 Page1、Page2 和 Page3 组件共有的 Header 组件,但在 Login 和 About 中不存在。
我的 js 代码是这样的
<Router>
<div>
<Route path='/login' component={Login} />
<Home>
<Route path='/page1' component={Page1} />
<Route path='/page2' component={Page2} />
<Route path='/page3' component={Page3} />
</Home>
<Route path='/about' component={About} />
</div>
</Router>
我希望登录组件仅在 /login 上显示 当我请求 /page1、/page2、/page3 时,它们应该分别包含 Home 组件和该页面的内容。
我得到的是渲染的登录组件,并且在页面1的组件下方被渲染。
我很确定我遗漏了一些非常微不足道的东西或在某个地方犯了一个非常愚蠢的错误,我会很感激我能得到的所有帮助。过去两天我一直被这个问题困扰。
【问题讨论】:
-
你需要在 Route 添加
exact属性,该属性需要在完全匹配上显示。 -
用 /login 尝试过,但我的 Home 组件显示在我的 Login 组件下。
-
@AdityaTalpade 也检查我的答案
-
嘿 Aditya,你能做这件事吗?我也想做同样的事情。在我的场景中,当用户打开网站时,如果用户未登录,react 会将其重定向到登录名。登录后,我的索引页面会显示导航栏和搜索栏。现在我想在这个索引页面的正文中显示其余页面,以便所有页面共享相同的导航栏和搜索栏。如果您能帮助我,我将不胜感激。
-
没有。我放弃了。与反应路由器 v3 一起使用。我的工作流程在处理 v4 时受到严重阻碍,不值得付出额外的努力。
标签: javascript reactjs react-router react-router-dom