我正在使用React Router 4.2.0。在我的场景中,我必须在相同的URL中加载不同的组件。
我有两个组件Login
和Dashboard
当我运行localhost:3000
组件时,应根据localstorage
标志加载。
我尝试使用以下代码它显示404页面
<Route path='*' component={NotFound} />
<Route path="/" render={(props) => {
if (localStorage.getItem('user')) {
return <Dashboard />
}
else {
return <Login />
}
}} />
答案 0 :(得分:2)
默认情况下,路由以包含方式匹配(尽可能多)。通配符捕获所有内容,如果需要以独占方式在它们之间切换,则需要使用Switch
组件。换句话说:
<div className="App">
<Switch>
<Route path="/" component={Login}/>
<Route path="*" component={NotFound} exact/>
</Switch>
</div>
以上内容将匹配根目录上的登录页面,然后回退到404。