【发布时间】:2020-12-20 18:38:02
【问题描述】:
我的 PrivateRoute 组件有问题。它应该在特定情况下将用户重定向到特定页面,但事实并非如此。登录后,我的条件工作正常,但我没有重定向到正确的页面。我只看到/#,这是我正在使用的 b2c 的默认重定向。
组件:
const PrivateRoute: React.FC<PrivateRouteProps> = (props: PrivateRouteProps) => {
const { authStatus } = props;
...
if (authStatus === AuthStatus.SomeRole) {
// conditional is working
return <Route exact path="/specificUrl" render={() => <Redirect to="/specificUrl" />} />;
}
...
};
我的应用:
const App: React.FC = () => (
<Suspense fallback={<Loader />}>
<Switch>
...
<PrivateRoute path="/specificUrl" component={SpecificComponent} />
...
</Switch>
</Suspense>
);
我做错了什么?如果我将代码更改为:
if (authenticationStatus === AuthenticationStatus.SignedInNotInPilot) {
return <Redirect to="/specificUrl" />;
// return <Route exact path="/specificUrl" render={() => <Redirect to="/specificUrl" />} />;
}
我被重定向到/specificUrl,但SpecificComponent 没有加载。
但如果我将代码更改为 SpecificComponent 正在加载但我必须手动重定向:
if (authenticationStatus === AuthenticationStatus.SignedInNotInPilot) {
return <Route exact path="/specificUrl" render={() => <SpecificComponent />} />;
// return <Redirect to="/specificUrl" />;
// return <Route exact path="/specificUrl" render={() => <Redirect to="/specificUrl" />} />;
}
【问题讨论】:
标签: reactjs redirect react-router react-router-dom