Reactjs 重定向到您来自的页面
我创建了受保护的路由组件,如果没有经过身份验证,它将重定向到登录名为“/”的位置。这很好。我的问题是,如果用户经过身份验证,如何限制路径“/” 例如,我想转到Reactjs 重定向到您来自的页面,reactjs,react-router,Reactjs,React Router,我创建了受保护的路由组件,如果没有经过身份验证,它将重定向到登录名为“/”的位置。这很好。我的问题是,如果用户经过身份验证,如何限制路径“/” 例如,我想转到'/welcome',我点击了一些外部链接,将我发送到'/welcome',但由于我没有经过身份验证,它会将我重定向到'/'进行身份验证。在我完成身份验证后,它应该再次将我重定向到'/welcome',我的初始路径 怎么做?我现在确实想对路径进行硬编码,我想将我发送到最初所在的路径 如果我在浏览器中将路径手动更改为'/welcome',如果
'/welcome'
,我点击了一些外部链接,将我发送到'/welcome'
,但由于我没有经过身份验证,它会将我重定向到'/'
进行身份验证。在我完成身份验证后,它应该再次将我重定向到'/welcome'
,我的初始路径
怎么做?我现在确实想对路径进行硬编码,我想将我发送到最初所在的路径
如果我在浏览器中将路径手动更改为'/welcome'
,如果我按“后退”按钮,它将返回到'/'
,我不希望这样。考虑到我已通过身份验证,它应该保持在'/welcome'
上
我试过这样的方法:
<Route exact path="/">
{isAuth ? <Redirect to="/welcome" /> : <Auth />}
</Route>
{isAuth?:}
问题是我不想硬代码重定向到“/welcome”,因为我可能来自另一个路径”/example'
有什么建议吗?试试这样做
const PrivateRoute = ({ component: Component, isLoggedIn, ...rest }) => (
<Route
{...rest}
render={props =>
isLoggedIn ? (
<Component {...props} />
) : (
<Redirect
to={{ pathname: '/', state: { from: props.location } }}
/>
)
}
/>
);
我使用路由器内部的受保护路由作为
<PrivateRoute
path="/someEndpoint"
component={SideMenu}
isLoggedIn={props.isLoggedIn}
/>
我希望我能帮助你。你的回答很有帮助,还有一件事吗?如果我在浏览器中手动将url更改为
“/”
,如果经过身份验证,我如何保持当前路线?如果这对您有帮助,我很高兴。请在我的答案中点击勾选标记接受。关于你的问题,你能告诉我一些使用codesandbox.io的场景吗
<PrivateRoute
path="/someEndpoint"
component={SideMenu}
isLoggedIn={props.isLoggedIn}
/>