路由守卫

//user
import React from "react";
import { Route, Redirect } from "react-router-dom";
import LoginPage from "../pages/LoginPage";
export default function PrivateRoute({ component: Cmp, isLogin, ...rest }) {
 return (
 <Route
 {...rest}
 render={props =>
 isLogin ? (
 <Cmp {...props} />
 ) : (
 <Redirect
 to={{
 pathname: "/login",
 state: { redirect: props.location.pathname },
 }}
 />
 )
 }
 />
 );
}

//login
import React from "react";
import { Redirect } from "react-router-dom";
export default function LoginPage({ location, isLogin, login }) {
 const redirect = location.state.redirect || "/"; //重定向地址
 if (isLogin) {
 return <Redirect to={redirect} />;
 }
 return (
 <div>
 <p>⽤户登录</p>
 <br />
 <button onClick={login}>登录</button>
 </div>
 );
}

//罗友
<Route exact path="/login" component={LoginPage} />
<PrivateRoute path="/user" component={UserPage} />
<PrivateRoute path="/user" component={UserPage} isLogin={true} />
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容