From 44e70ac25b2e28ce0480ffcb780ed73a6a00d2c7 Mon Sep 17 00:00:00 2001
From: shikong <919411476@qq.com>
Date: Mon, 28 Oct 2024 13:41:15 +0800
Subject: [PATCH] =?UTF-8?q?12.=20react-router=20=E5=9F=BA=E6=9C=AC?=
=?UTF-8?q?=E4=BD=BF=E7=94=A8?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/App.js | 37 ++++++++++++++++++++++++---------
src/pages/Page3.js | 10 +++++++++
src/pages/SonPage.js | 44 ++++++++++++++++++++++++++++++++++++++++
src/pages/SonPageLazy.js | 44 ++++++++++++++++++++++++++++++++++++++++
4 files changed, 125 insertions(+), 10 deletions(-)
create mode 100644 src/pages/Page3.js
create mode 100644 src/pages/SonPage.js
create mode 100644 src/pages/SonPageLazy.js
diff --git a/src/App.js b/src/App.js
index 001cc13..bdf0b82 100644
--- a/src/App.js
+++ b/src/App.js
@@ -1,4 +1,4 @@
-import React, {useState} from "react";
+import React, {useState, Suspense} from "react";
// import logo from './logo.svg';
import './App.css';
@@ -6,6 +6,11 @@ import InputComponent from "./components/InputComponent";
import SonComponent from "./components/SonComponent";
import SonComponent2 from "./components/SonComponent2";
import {Link, NavLink, Route, Routes} from "react-router-dom";
+import SonPage from "./pages/SonPage";
+import Page3 from "./pages/Page3";
+
+// 异步组件, 懒加载
+const LazyPage = React.lazy(()=> import("./pages/SonPageLazy"))
function App() {
// vue3 组合式 API
@@ -177,6 +182,8 @@ function App() {
首页
页面1
页面2
+ 页面3-子页面
+ 页面3-子页面2
@@ -186,14 +193,24 @@ function App() {
页面2
- {/* react router v5 和 v6 有较大区别*/}
- {/* v5 中为 Switch*/}
-
- {/* v6 为 element 或 Component */}
- Router Page 1}>
- {/* v5 只有 component */}
- Router Page 2
}>
-
+ {/*过渡效果*/}
+ ...加载中...}>
+ {/* react router v5 和 v6 有较大区别*/}
+ {/* v5 中为 Switch*/}
+
+ {/* v6 为 element 或 Component */}
+ Router Page 1}>
+ {/* v5 只有 component */}
+ Router Page 2
}>
+
+ }>
+ }>
+
+
+
+
+
+
{/*class 类名必须为 className, 内容只能是字符串*/}
{/*
*/}
@@ -229,7 +246,7 @@ function App() {
-
+
diff --git a/src/pages/Page3.js b/src/pages/Page3.js
new file mode 100644
index 0000000..d29a982
--- /dev/null
+++ b/src/pages/Page3.js
@@ -0,0 +1,10 @@
+import {Outlet} from "react-router-dom";
+
+export default function Page3(){
+ return
+ Router Page3
+
+ {/*指定子页面显示位置*/}
+
+
+}
diff --git a/src/pages/SonPage.js b/src/pages/SonPage.js
new file mode 100644
index 0000000..5b4bc42
--- /dev/null
+++ b/src/pages/SonPage.js
@@ -0,0 +1,44 @@
+import {useLocation, useNavigate, useParams, useSearchParams} from "react-router-dom";
+import {useCallback} from "react";
+
+export default function SonPage(){
+ // 适用于 /path/:id 形式
+ let params = useParams()
+
+ // 适用于 /path?page=xxx 形式
+ let [query] = useSearchParams()
+ console.log(query, query.get("page"))
+
+ let location = useLocation()
+
+ const print = useCallback((obj)=>{
+ return JSON.stringify(obj)
+ },[])
+
+ const nav = useNavigate()
+
+ return
+ Son Page
+
+
+ params => {print(params)}
+
+
+
+ query.get("page") => {print(query.get("page"))}
+
+
+
+ location => {print(location)}
+
+
+
+
+
+
+
+}
diff --git a/src/pages/SonPageLazy.js b/src/pages/SonPageLazy.js
new file mode 100644
index 0000000..5b4bc42
--- /dev/null
+++ b/src/pages/SonPageLazy.js
@@ -0,0 +1,44 @@
+import {useLocation, useNavigate, useParams, useSearchParams} from "react-router-dom";
+import {useCallback} from "react";
+
+export default function SonPage(){
+ // 适用于 /path/:id 形式
+ let params = useParams()
+
+ // 适用于 /path?page=xxx 形式
+ let [query] = useSearchParams()
+ console.log(query, query.get("page"))
+
+ let location = useLocation()
+
+ const print = useCallback((obj)=>{
+ return JSON.stringify(obj)
+ },[])
+
+ const nav = useNavigate()
+
+ return
+ Son Page
+
+
+ params => {print(params)}
+
+
+
+ query.get("page") => {print(query.get("page"))}
+
+
+
+ location => {print(location)}
+
+
+
+
+
+
+
+}