当前位置: 首页 > news >正文

React 页面路由ReactRouter 路由跳转 参数传递 路由配置 嵌套路由

介绍

React Router 是一个用于 React 应用程序的标准库,它允许开发者在 React 应用中实现客户端路由功能,即可以通过 URL 导航到不同的视图而不需要重新加载页面。它的核心思想是通过保持应用程序状态的同时,更新视图并保持用户的浏览体验。

安装依赖

 npm i react-router-dom

项目结构

src/router/index.js
在这里插入图片描述

配置路由

import User from "../view/user";
import Login from "../view/login";import {createBrowserRouter} from "react-router-dom";const router = createBrowserRouter([{path: "/",element: <Login></Login>, // 默认路由重定向到 /login},,{path:'/login',element:<Login></Login>
},{   path:'/user',element:<User></User>}
,])export default router

导入路由

index.js

	import {RouterProvider} from "react-router-dom";
import router from "./router/index";const root = ReactDOM.createRoot(document.getElementById('root'));
root.render(<React.StrictMode><Provider store={store}><RouterProvider router={router}></RouterProvider></Provider></React.StrictMode>
);reportWebVitals();

路由跳转

声明式

import { Link } from "react-router-dom";<Link to="/user">跳转个人中心</Link>

编程式

import { useNavigate} from "react-router-dom";const nav =  useNavigate()<button onClick={()=>{nav('/user')}}>跳转</button>

路由传参

SearchPamas传递

 <button onClick={()=>{nav('/user?id=123')}}>跳转</button>

SearchPamas接收

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

Pamas传递

<button onClick={()=>{nav('/user/123')}}>跳转</button>

路由占位

{   path:'/user/:id',element:<User></User>}

Pamas接收

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

嵌套路由

import {createBrowserRouter} from "react-router-dom";const router = createBrowserRouter([{path: "/",element: <Login></Login>, // 默认路由重定向到 /login},,{path:'/login',element:<Login></Login>
},{   path:'/user',element:<User></User>,children:[{path:'info',element:<Info></Info>}]}
,])export default router
import {Outlet} from "react-router-dom";const User=()=>{return <div>用户页<Outlet></Outlet></div>
}export default  User

默认二级路由
居然到/user自动跳转到Info组件

{   path:'/user',element:<User></User>,children:[{// path:'info',index:true,element:<Info></Info>}]}

404路由配置

路由配置项最后

{path:'*',element:<NotFound></NotFound>}

两种路由模式

分别是 HashRouter 和 BrowserRouter
HashRouter:aaa/#/bbb 不需要配置Nginx
BrowserRouter:aaa/bbb 需要配置Nginx

import {createBrowserRouter,createHashRouter} from "react-router-dom";

路由懒加载

可以让我们根据需要动态地加载路由对应的模块,而不是一开始就加载所有的模块。这能显著减小初始加载时的包体积,提高页面加载速度。

const Login =lazy(()=>import(   '../view/Login')){path: "/",element: <Suspense fallback={'加载中'}><Login></Login></Suspense>,},
http://www.dtcms.com/a/549802.html

相关文章:

  • C++ 分治 归并排序解决问题 力扣 LCR 170. 交易逆序对的总数 题解 每日一题
  • 贵州省住房与城乡建设部网站国内论坛网站有哪些
  • React 状态管理库相关收录
  • 深圳手机网站设计公司wordpress外链404
  • C/C++中的二级指针使用
  • 用dw做红米网站网站管理助手v3
  • 网站建设电话话术有趣软文广告经典案例
  • Fetch API 返回值获取方法
  • 机器学习-导师优选
  • 做视频网站要准备哪些资料阿里虚拟机建设网站
  • 使用局域网做网站百度手机助手网页
  • VMware-三种网络模式
  • 【weblogic】文件上传漏洞
  • 用 Rust 写一个前端项目辅助工具:JSON 格式化器
  • OrionX GPU池化社区版永久免费,算力管理焕新升级!
  • Rust 控制流深度解析:安全保证与迭代器哲学
  • 异常处理机制
  • 一元云淘网站开发android开发最全教程
  • 第 18 天:Web 服务器(Apache、Nginx、反向代理)
  • 郑州网站运营实力乐云seo如何从下载的视频查到原网站
  • nodejs有几种模块模式
  • 非法网站怎么推广海口专业的网站开发
  • 网站建设实训心得与建议安徽省工程建设信息网职称查询
  • 【高阶数据结构】AVL树
  • 三明 网站建设如何建立自己的
  • 可以做兼职的动漫网站公司网站想维护服务器
  • Go语言设计模式:桥接模式详解
  • 前端(Vue3)如何接收后端(SpringBoot)返回的文件并下载
  • 低空经济网络安全体系
  • 福建省建设资格注册中心网站东莞网站推广技巧