App.js 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. import "./App.css";
  2. import { NavLink, Route, Routes } from "react-router-dom";
  3. // 懒加载 lazy ; 配合懒加载使用的组件 Suspense
  4. import { lazy, Suspense } from "react";
  5. import Home from "./pages/Home";
  6. // import About from "./pages/About";
  7. // import List from "./pages/List";
  8. import ListName from "./pages/ListName";
  9. import ListPhone from "./pages/ListPhone";
  10. // 懒加载引入
  11. const List = lazy(() => import("./pages/List"));
  12. const About = lazy(async()=>{
  13. await new Promise((resolve,reject)=>{
  14. setTimeout(()=>{
  15. resolve()
  16. },1000)
  17. })
  18. return import('./pages/About')
  19. })
  20. // 懒加载的高阶组件
  21. function LazyLoading(Component) {
  22. return(
  23. <Suspense fallback={<h4>正在加载中....</h4>}>
  24. <Component/>
  25. </Suspense>
  26. )
  27. }
  28. function App() {
  29. return (
  30. <div className="App">
  31. <header className="App-header">
  32. <NavLink className="App-link" to={"/"}>
  33. 首页
  34. </NavLink>
  35. &nbsp;&nbsp;&nbsp;&nbsp;
  36. <NavLink className="App-link" to={"/about"}>
  37. 关于
  38. </NavLink>
  39. &nbsp;&nbsp;&nbsp;&nbsp;
  40. <NavLink className="App-link" to={"/list"}>
  41. 列表
  42. </NavLink>
  43. </header>
  44. <main>
  45. <Routes>
  46. <Route path="/" element={<Home />} />
  47. <Route path="/about" element={LazyLoading(About)} />
  48. {/* <Route path="/about" Component={About} /> */}
  49. <Route path="/list" element={LazyLoading(List)}>
  50. <Route index="true" element={<ListPhone />}></Route>
  51. <Route path="name" element={<ListName />} />
  52. {/* <Route path="phone" element={<ListPhone />} /> */}
  53. </Route>
  54. </Routes>
  55. </main>
  56. </div>
  57. );
  58. }
  59. export default App;