我有如下所示的路由,如果有人单击主页上的ADMIN按钮(此按钮路由到/ admin),我想将用户重定向到admin / users页面,但出现此错误:
您尝试重定向到当前所在的路线: / admin / users
<Switch location={this.props.location}>
<Route path="/" exact component={Home} />
<Route path="/orders" component={Orders} />
<Route path="/account" component={Account} />
<Route path="/admin/users" component={Users} />
<Route path="/admin/auth" component={Auth} />
<Redirect from="/admin" to="/admin/users" />
<Redirect from="*" to="/" />
</Switch>
如果您有帮助,我将不胜感激。
谢谢
答案 0 :(得分:3)
不是解决方案,但会消除错误。
<Switch location={this.props.location}>
<Route path="/" exact component={Home} />
<Route path="/orders" component={Orders} />
<Route path="/account" component={Account} />
<Route path="/admin/users" component={Users} />
<Route path="/admin/auth" component={Auth} />
{allowedToRedirect
?(
<Redirect from="/admin" to="/admin/users" />
<Redirect from="*" to="/" />
)
: null}
</Switch>
const allowedToRedirect = location.pathname === window.location.pathname;
https://codesandbox.io/s/pjk4ykr4kq
答案 1 :(得分:3)
我只有编写以下代码才能实现:
<Route exact strict path="/admin" render={({location}) => {
if (location.pathname === window.location.pathname) {
return <Redirect to="/admin/users" />;
}
return null;
}} />
但是Switch为什么不阻止一次又一次运行下面的重定向路由?因为当重定向发生时, / admin / users 路由也可以,但是 / admin 路由也可以。为什么Switch无法阻止?有人对此有答案吗?