我使用的是the next (5.0.0) version react-router-redux,它与react-router 4.x兼容。
我的应用程序有两个页面:/login和/home。
我尝试将页面重定向到/login,如果用户访问一个不存在的页面。这是我的代码
import { Route, Redirect } from 'react-router-dom';
import { ConnectedRouter, routerMiddleware, push } from 'react-router-redux';
ReactDOM.render(
<Provider store={store}>
<ConnectedRouter history={history}>
<div>
<Route path="/login" render={() => (
isSignedIn ? <Redirect to="/home" /> : <Login />
)}/>
<Route path="/home" component={Home} />
<Redirect to="/login" />
</div>
</ConnectedRouter>
</Provider>,
document.getElementById('root')
);如果我删除<Redirect to="/login" />,如果用户已经登录,当他打开页面/home时,应用程序将直接转到主页,这是很好的。
然而,在<Redirect to="/login" />中,当用户打开页面/home时,应用程序将首先重定向到/login,然后返回/home。
如何避免此重定向两次?谢谢
发布于 2017-07-30 16:44:48
使用Switch,以便呈现第一个匹配的路由,而不呈现其他路由
import {Switch} from 'react-router';
ReactDOM.render(
<Provider store={store}>
<ConnectedRouter history={history}>
<Switch>
<Route path="/login" render={() => (
isSignedIn ? <Redirect to="/home" /> : <Login />
)}/>
<Route path="/home" component={Home} />
<Redirect to="/login" />
</Switch>
</ConnectedRouter>
</Provider>,
document.getElementById('root')
);在您的示例中发生的情况是,即使/home匹配,也会执行Redirect。
https://stackoverflow.com/questions/45397624
复制相似问题