什么是路由守卫?

路由跳转前做一些验证,比如登录验证,是网站中的普遍需求

导航守卫(navigation-guards)这个名字,听起来怪怪的,但既然官方文档是这样翻译的,就姑且这么叫吧

privateRoute.tsx具体操作,详情见什么是路由守卫(privateRoute)?

我们在src/util下面增加了一个路由守卫的工具,只需要把他引入到您的router文件中,替换之前的route组件即可

在App.tsx中引入privateRoutes.tsx

  1. import { PrivateRoute } from "./utils/privateRoutes";
  1. import React from "react";
  2. import "./App.css";
  3. import { OldApp } from "./oldApp";
  4. import loadable from "@loadable/component";
  5. import { BrowserRouter as Router, Route, Switch } from "react-router-dom";
  6. import { JoyNopLayout } from "./common";
  7. import { Spin } from "antd";
  8. import { PrivateRoute } from "./utils/privateRoutes";
  9. import { AboutDemo } from "./aboutdemo/about.com";
  10. const App: React.FC = () => {
  11. console.log("ENV:", process.env.REACT_APP_ENV);
  12. const isSignIn=true //判断是否跳转
  13. return (
  14. <div>
  15. <React.Fragment>
  16. <Router>
  17. <Switch>
  18. <JoyNopLayout>
  19. <PrivateRoute isSignIn={isSignIn} exact path="/" component={OldApp} />
  20. <PrivateRoute isSignIn={isSignIn} exact path="/user" component={UserCom} />
  21. <PrivateRoute isSignIn={isSignIn} exact path="/todo" component={TodoDemo} />
  22. <PrivateRoute isSignIn={isSignIn} exact path="/about" component={AboutDemo} />
  23. </JoyNopLayout>
  24. <Route
  25. render={() => {
  26. return <p>Not Found</p>;
  27. }}
  28. />
  29. </Switch>
  30. </Router>
  31. </React.Fragment>
  32. </div>
  33. );
  34. };
  35. export default App;