我想在顶部渲染一些带有导航的路线,而在没有任何导航的情况下渲染其他路线(如注册/登录页面)。
![render example with react router](https://i.stack.imgur.com/gTYCa.png)
对于导航的设置,我有:
const App = () => (
<Router>
<div>
<Nav />
<div>
<Route exact path="/" component={Home} />
<Route path="/account" component={Account} />
<Route path="/news" component={News} />
</div>
<Footer />
</div>
</Router>
);
我正在尝试找到使用 React Router 处理此问题的最佳方法(似乎必须使用某种类型的条件来处理? - “如果我当前的路线与这些路线中的任何一个匹配,则像这样渲染,否则渲染此.”)。
Thanks!
你至少有两种可能性:
- Use
Route
“path”属性来测试路径并渲染组件。路径属性接受path.to.regexp表达式。
- 将你的组件包裹起来withRouter方法及内部
Nav
测试路由是否匹配并渲染null
否则。
第一个答案:
const App = () => (
<Router>
<div>
<Route path="/(?!signin|signup)" component={Nav}/>
<div>
<Route exact path="/" component={Home} />
<Route path="/account" component={Account} />
<Route path="/news" component={News} />
</div>
<Footer />
</div>
</Router>
);
第二个答案:
import { withRouter } from 'react-router'
const NavWithRouter = withRouter(Nav);
const App = () => (
<Router>
<div>
<NavWithRouter/>
<div>
<Route exact path="/" component={Home} />
<Route path="/account" component={Account} />
<Route path="/news" component={News} />
</div>
<Footer />
</div>
</Router>
);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)