夜间模式
首先需要下载安装
bash
npm install react-router-dom
1
因为react 本质上还是js模块化。
react-router 可以作为一个组件而存在,在router组件内跳转不同组件。
所以为了方便管理,可以新建一个router文件。(当然,这不是必须)
react-Router 提供了两种方式来定义路由:
- 对象形式:v6版本新引入,作为简洁的路由配置
- 标签形式
使用那种方式全凭个人喜好。
基本使用
对象形式
javascript
import { createBrowserRouter } from 'react-router-dom';
import Home from './Home';
import About from './About';
import Profile from './Profile';
const router = createBrowserRouter([
{
path: "/",
element: <Home />,
},
{
path: "/about",
element: <About />,
},
{
path: "/profile",
element: <Profile />,
},
]);
export default router;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
javascript
import React from 'react';
import { RouterProvider } from 'react-router-dom';
import router from './router';
function App() {
return <RouterProvider router={router} />;
}
export default App;
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
javascript
createBrowserRouter([
{
path: "/",
element: <Root />,
children: [
{
path: "contact",
element: <Contact />,
},
{
path: "dashboard",
element: <Dashboard />,
loader: ({ request }) =>
fetch("/api/dashboard.json", {
signal: request.signal,
}),
},
{
element: <AuthLayout />,
children: [
{
path: "login",
element: <Login />,
loader: redirectIfUser,
},
{
path: "logout",
action: logoutUser,
},
],
},
],
},
]);
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
组件/标签形式
javascript
import { Routes, Route } from 'react-router-dom';
function App() {
return (
<Routes>
<Route path="/" element={<Home />} />
<Route path="/about" element={<About />} />
</Routes>
);
}
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
javascript
// Configure nested routes with JSX
createBrowserRouter(
createRoutesFromElements(
<Route path="/" element={<Root />}>
<Route path="contact" element={<Contact />} />
<Route
path="dashboard"
element={<Dashboard />}
loader={({ request }) =>
fetch("/api/dashboard.json", {
signal: request.signal,
})
}
/>
<Route element={<AuthLayout />}>
<Route
path="login"
element={<Login />}
loader={redirectIfUser}
/>
<Route path="logout" action={logoutUser} />
</Route>
</Route>
)
);
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25