欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 房产 > 家装 > react-router基本写法

react-router基本写法

2025/5/20 0:27:59 来源:https://blog.csdn.net/m0_68124243/article/details/147962820  浏览:    关键词:react-router基本写法

1. 创建项目并安装所有依赖 

npx create-react-app react-router-pro
npm i

2. 安装所有的 react router 包

npm i react-router-dom

3. 启动项目

npm run start

router/index.js

// 创建路由实例 绑定path elementimport Layout from "@/pages/Layout";
import Month from "@/pages/Month";
import New from "@/pages/New";
import Year from "@/pages/Year";
import { createBrowserRouter } from "react-router-dom";const router = createBrowserRouter([{path: "/",element: <Layout />,children: [{index: true,element: <Month />,},{ path: "Year", element: <Year /> },],},{path: "/new",element: <New />,},
]);export default router;

index.js

import React from "react";
import ReactDOM from "react-dom/client";
import "./index.css";
import { RouterProvider } from "react-router-dom";
import router from "./router";
import { Provider } from "react-redux";
import store from "./store";// 导入定制主题
import "./theme.css";const root = ReactDOM.createRoot(document.getElementById("root"));
root.render(<Provider store={store}><RouterProvider router={router} /></Provider>
);

1. 声明式导航

import { Link } from "react-router-dom";<Link to="/article">文章</Link>

2. 编程式导航

const { useNavigate } = require("react-router-dom");export const Login = () => {const navigate = useNavigate();return (<div>我是登录页<button onClick={() => navigate("/article")}>跳转至文章</button></div>);
};

3. 路由导航传参

(1) searchParams 传参

page/Login/index.js

const { useNavigate } = require("react-router-dom");export const Login = () => {const navigate = useNavigate();return (<div>我是登录页<button onClick={() => navigate("/article?id=1001&name=jack")}>跳转至文章</button></div>);
};

page/Article/index.js

const { useSearchParams } = require("react-router-dom");const [params] = useSearchParams()
const id = params.get('id')
const name = params.get('name')

(2) params 传参

 page/Login/index.js

const { useNavigate } = require("react-router-dom");export const Login = () => {const navigate = useNavigate();return (<div>我是登录页<button onClick={() => navigate("/article/1001/jack")}>跳转至文章</button></div>);
};

page/Article/index.js 

const { useParams } = require("react-router-dom");const params = useParams()
const id = params.id
const name = params.name

别忘在 router 里加占位符

  {path: "/article/:id/:name",element: <Article />,},

4. 嵌套路由配置

import { createBrowserRouter } from "react-router-dom";const router = createBrowserRouter([{path: "/",element: <Layout />,children: [{path: 'board',element: <Board />,},{path: "about",element: <About />,},],},
]);export default router;
const Layout = () => {return (<div>  <div>我是Layout</div><Link to="/board">面板</Link><Link to="/about">关于</Link>{/* 二级路由出口 */}<Outlet /></div>);
};export default Layout;

5. 默认二级路由配置

只需要在二级路由的位置去掉 path,设置 index 属性为 true

import { createBrowserRouter } from "react-router-dom";const router = createBrowserRouter([{path: "/",element: <Layout />,children: [// 设置为默认二级路由,一级路由访问的时候,它也能得到渲染{index: true,element: <Board />,},{path: "about",element: <About />,},],},
]);export default router;
const Layout = () => {return (<div>  <div>我是Layout</div><Link to="/">面板</Link><Link to="/about">关于</Link>{/* 二级路由出口 */}<Outlet /></div>);
};export default Layout;

 6. 404 路由配置

      {path: "*",element: <NotFound />,},
const NotFound = () => {// 自定义模版return (<div> this is NotFound </div>);
};export default NotFound;

7. 两种路由模式

(1)history 模式

(2)hash 模式 

 不需要后端配合

import { createHashRouter } from "react-router-dom";const router = createHashRouter([{path: "/",element: <Layout />,children: [// 设置为默认二级路由,一级路由访问的时候,它也能得到渲染{index: true,element: <Board />,},{path: "about",element: <About />,},],},
]);export default router;

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词