12. react-router
This commit is contained in:
parent
9d2438acda
commit
83c59aebab
39
package-lock.json
generated
39
package-lock.json
generated
@ -14,6 +14,7 @@
|
|||||||
"proptypes": "^1.1.0",
|
"proptypes": "^1.1.0",
|
||||||
"react": "^18.3.1",
|
"react": "^18.3.1",
|
||||||
"react-dom": "^18.3.1",
|
"react-dom": "^18.3.1",
|
||||||
|
"react-router-dom": "^6.27.0",
|
||||||
"react-scripts": "5.0.1",
|
"react-scripts": "5.0.1",
|
||||||
"web-vitals": "^2.1.4"
|
"web-vitals": "^2.1.4"
|
||||||
}
|
}
|
||||||
@ -3247,6 +3248,14 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/@remix-run/router": {
|
||||||
|
"version": "1.20.0",
|
||||||
|
"resolved": "https://registry.npmmirror.com/@remix-run/router/-/router-1.20.0.tgz",
|
||||||
|
"integrity": "sha512-mUnk8rPJBI9loFDZ+YzPGdeniYK+FTmRD1TMCz7ev2SNIozyKKpnGgsxO34u6Z4z/t0ITuu7voi/AshfsGsgFg==",
|
||||||
|
"engines": {
|
||||||
|
"node": ">=14.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/@rollup/plugin-babel": {
|
"node_modules/@rollup/plugin-babel": {
|
||||||
"version": "5.3.1",
|
"version": "5.3.1",
|
||||||
"resolved": "https://registry.npmmirror.com/@rollup/plugin-babel/-/plugin-babel-5.3.1.tgz",
|
"resolved": "https://registry.npmmirror.com/@rollup/plugin-babel/-/plugin-babel-5.3.1.tgz",
|
||||||
@ -14901,6 +14910,36 @@
|
|||||||
"node": ">=0.10.0"
|
"node": ">=0.10.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/react-router": {
|
||||||
|
"version": "6.27.0",
|
||||||
|
"resolved": "https://registry.npmmirror.com/react-router/-/react-router-6.27.0.tgz",
|
||||||
|
"integrity": "sha512-YA+HGZXz4jaAkVoYBE98VQl+nVzI+cVI2Oj/06F5ZM+0u3TgedN9Y9kmMRo2mnkSK2nCpNQn0DVob4HCsY/WLw==",
|
||||||
|
"dependencies": {
|
||||||
|
"@remix-run/router": "1.20.0"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=14.0.0"
|
||||||
|
},
|
||||||
|
"peerDependencies": {
|
||||||
|
"react": ">=16.8"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/react-router-dom": {
|
||||||
|
"version": "6.27.0",
|
||||||
|
"resolved": "https://registry.npmmirror.com/react-router-dom/-/react-router-dom-6.27.0.tgz",
|
||||||
|
"integrity": "sha512-+bvtFWMC0DgAFrfKXKG9Fc+BcXWRUO1aJIihbB79xaeq0v5UzfvnM5houGUm1Y461WVRcgAQ+Clh5rdb1eCx4g==",
|
||||||
|
"dependencies": {
|
||||||
|
"@remix-run/router": "1.20.0",
|
||||||
|
"react-router": "6.27.0"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=14.0.0"
|
||||||
|
},
|
||||||
|
"peerDependencies": {
|
||||||
|
"react": ">=16.8",
|
||||||
|
"react-dom": ">=16.8"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/react-scripts": {
|
"node_modules/react-scripts": {
|
||||||
"version": "5.0.1",
|
"version": "5.0.1",
|
||||||
"resolved": "https://registry.npmmirror.com/react-scripts/-/react-scripts-5.0.1.tgz",
|
"resolved": "https://registry.npmmirror.com/react-scripts/-/react-scripts-5.0.1.tgz",
|
||||||
|
@ -9,6 +9,7 @@
|
|||||||
"proptypes": "^1.1.0",
|
"proptypes": "^1.1.0",
|
||||||
"react": "^18.3.1",
|
"react": "^18.3.1",
|
||||||
"react-dom": "^18.3.1",
|
"react-dom": "^18.3.1",
|
||||||
|
"react-router-dom": "^6.27.0",
|
||||||
"react-scripts": "5.0.1",
|
"react-scripts": "5.0.1",
|
||||||
"web-vitals": "^2.1.4"
|
"web-vitals": "^2.1.4"
|
||||||
},
|
},
|
||||||
|
@ -37,3 +37,7 @@
|
|||||||
transform: rotate(360deg);
|
transform: rotate(360deg);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.active {
|
||||||
|
color: orange;
|
||||||
|
}
|
||||||
|
28
src/App.js
28
src/App.js
@ -5,6 +5,7 @@ import './App.css';
|
|||||||
import InputComponent from "./components/InputComponent";
|
import InputComponent from "./components/InputComponent";
|
||||||
import SonComponent from "./components/SonComponent";
|
import SonComponent from "./components/SonComponent";
|
||||||
import SonComponent2 from "./components/SonComponent2";
|
import SonComponent2 from "./components/SonComponent2";
|
||||||
|
import {Link, NavLink, Route, Routes} from "react-router-dom";
|
||||||
|
|
||||||
function App() {
|
function App() {
|
||||||
// vue3 组合式 API
|
// vue3 组合式 API
|
||||||
@ -170,6 +171,29 @@ function App() {
|
|||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="App">
|
<div className="App">
|
||||||
|
<div>
|
||||||
|
<span>跳转至: </span>
|
||||||
|
{/*NavLink 会在当前路由匹配时 加一个 class 名为 active 的样式*/}
|
||||||
|
<NavLink to={"/"}> 首页 </NavLink>
|
||||||
|
<NavLink to={"router-page1"}> 页面1 </NavLink>
|
||||||
|
<NavLink to={"router-page2"}> 页面2 </NavLink>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div>
|
||||||
|
<span>跳转至: </span>
|
||||||
|
<Link to={"/"}> 首页 </Link>
|
||||||
|
<Link to={"router-page1"}> 页面1 </Link>
|
||||||
|
<Link to={"router-page2"}> 页面2 </Link>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{/* react router v5 和 v6 有较大区别*/}
|
||||||
|
{/* v5 中为 Switch*/}
|
||||||
|
<Routes>
|
||||||
|
{/* v6 为 element 或 Component */}
|
||||||
|
<Route path="/router-page1" element={<div>Router Page 1</div>}></Route>
|
||||||
|
{/* v5 只有 component */}
|
||||||
|
<Route path="/router-page2" Component={() => <div>Router Page 2</div>}></Route>
|
||||||
|
</Routes>
|
||||||
{/*class 类名必须为 className, 内容只能是字符串*/}
|
{/*class 类名必须为 className, 内容只能是字符串*/}
|
||||||
<header className="App-header">
|
<header className="App-header">
|
||||||
{/*<img src={logo} className="App-logo" alt="logo" />*/}
|
{/*<img src={logo} className="App-logo" alt="logo" />*/}
|
||||||
@ -225,7 +249,9 @@ function App() {
|
|||||||
父组件
|
父组件
|
||||||
<SonComponent a={1} b={2} msg={"App Msg"}
|
<SonComponent a={1} b={2} msg={"App Msg"}
|
||||||
slot2={<div>SonComponent 插槽 slot2 (具名插槽)</div>}
|
slot2={<div>SonComponent 插槽 slot2 (具名插槽)</div>}
|
||||||
scopeslot={(scope)=>{return <div>{scope}</div>}}>
|
scopeslot={(scope) => {
|
||||||
|
return <div>{scope}</div>
|
||||||
|
}}>
|
||||||
<div>
|
<div>
|
||||||
SonComponent 插槽 slot1
|
SonComponent 插槽 slot1
|
||||||
</div>
|
</div>
|
||||||
|
@ -3,6 +3,7 @@ import ReactDOM from 'react-dom/client';
|
|||||||
import './index.css';
|
import './index.css';
|
||||||
import App from './App';
|
import App from './App';
|
||||||
import reportWebVitals from './reportWebVitals';
|
import reportWebVitals from './reportWebVitals';
|
||||||
|
import {BrowserRouter} from "react-router-dom";
|
||||||
|
|
||||||
const root = ReactDOM.createRoot(document.getElementById('root'));
|
const root = ReactDOM.createRoot(document.getElementById('root'));
|
||||||
root.render(
|
root.render(
|
||||||
@ -12,7 +13,9 @@ root.render(
|
|||||||
* 重复执行2次生命周期函数, 检测额外的副作用 如 render
|
* 重复执行2次生命周期函数, 检测额外的副作用 如 render
|
||||||
*/
|
*/
|
||||||
// <React.StrictMode>
|
// <React.StrictMode>
|
||||||
<App/>
|
<BrowserRouter>
|
||||||
|
<App/>
|
||||||
|
</BrowserRouter>
|
||||||
// </React.StrictMode>
|
// </React.StrictMode>
|
||||||
);
|
);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user