首页 > 其他分享 >前端路由快速上手-React-Router

前端路由快速上手-React-Router

时间:2024-07-26 11:26:15浏览次数:15  
标签:index const router React import Router path 路由

1. 前端路由简介

前端路由是一种在单页面应用(SPA)中实现页面跳转的技术,它允许我们通过改变URL地址而无需重新加载页面来显示不同的内容。在前端路由中,每个路径(path)都对应一个组件(component),当访问特定的路径时,对应的组件就会在页面上渲染。

2. 创建路由开发环境

要开始使用React Router,首先需要创建一个新的React应用,并安装React Router的DOM包。

# 使用Create React App创建项目
npx create-react-app react-router-pro

# 安装React Router DOM包
npm install react-router-dom

# 启动项目
npm run start

3. 快速开始

接下来,我们将创建一个简单的路由配置,定义两个路径:/login/article,分别对应登录页和文章页。

// 根index.js
import React from 'react';
import ReactDOM from 'react-dom';
import './index.css';
import { createBrowserRouter as createRouter, RouterProvider } from 'react-router-dom';

// 创建router实例对象并配置路由对应关系
const router = createRouter([
  {
    path: '/login',
    element: <div>我是登录页</div>,
  },
  {
    path: '/article',
    element: <div>我是文章页</div>,
  },
]);

ReactDOM.render(
  <React.StrictMode>
    <RouterProvider router={router} />
  </React.StrictMode>,
  document.getElementById('root')
);

4. 抽象路由模块

为了使代码更加模块化,我们可以将每个页面组件抽象成单独的模块,然后在路由配置中引入它们。

// Article/index.js
const Article = () => <div>我是文章页</div>;
export default Article;

// Login/index.js
const Login = () => <div>我是登录页</div>;
export default Login;

// router/index.js
import Login from '../page/Login';
import Article from '../page/Article';
import { createRouter } from 'react-router-dom';

const router = createRouter([
  {
    path: '/login',
    element: <Login />,
  },
  {
    path: '/article',
    element: <Article />,
  },
]);

export default router;

5. 路由导航

路由导航是实现页面跳转的关键。React Router提供了两种导航方式:声明式导航和编程式导航。

5.1 声明式导航

声明式导航使用<Link>组件,它类似于HTML中的<a>标签,但专为React Router设计。

//login/index.js
import { Link } from 'react-router-dom';

const Login = () => {
  return (
    <div>
      我是登录页
      <Link to="/article">去文章页</Link>
    </div>
  );
};

export default Login;

5.2 编程式导航

编程式导航使用useNavigate钩子,它提供了一个navigate函数,允许我们以编程的方式进行页面跳转。

//login/index.js
import { useNavigate, Link } from 'react-router-dom';

const Login = () => {
  const navigate = useNavigate();
  return (
    <div>
      我是登录页
      <Link to="/article">去文章页</Link>
      <button onClick={() => navigate('/article')}>跳转文章页</button>
    </div>
  );
};

export default Login;

6. 导航传参

在路由跳转时,我们经常需要传递参数。React Router支持通过查询字符串(search params)和路径参数(path params)传递参数。

//login/index.js
import { useNavigate, Link } from 'react-router-dom';

const Login = () => {
  const navigate = useNavigate();
  return (
    <div>
      ...
      <button onClick={() => navigate('/article?id=1001&name=张三')}>searchParam传参</button>
      <button onClick={() => navigate('/article/1001/张三')}>Path传参</button>
    </div>
  );
};

export default Login;

//router/index.js
// ... 省略其他路由配置
{
  path: '/article/:id/:name',
  element: <Article />,
}

7. 嵌套路由配置

嵌套路由允许我们在一级路由中嵌入其他路由,形成多级路由结构。

//layout/index.js
import { Link, Outlet } from "react-router-dom";

const Layout = () => {
  return (
    <div>
      一级路由
      <Link to="/board">面板</Link>
      <Link to="/about">关于</Link>
      <Outlet />
    </div>
  );
};
export default Layout;

// router/index.js
import Layout from '../page/Layout';
// ... 省略其他路由配置
const router = createRouter([
  {
    path: '/',
    element: <Layout />,
    children: [
      {
        path: 'board',
        element: <Board />,
      },
      {
        index: true,
        element: <About />,
      },
    ],
  },
  // ... 404路由配置
]);

8. 默认二级路由和404路由配置

在路由配置中,我们可以设置默认的二级路由,以及当所有路由都不匹配时的404页面。

// router/index.js
// ... 省略其他路由配置
{
  path: '/',
  element: <Layout />,
  children: [
    // ... 其他二级路由配置
    {
      path: 'about',
      index: true, // 设置为默认二级路由
      element: <About />,
    },
    {
      path: '*',
      element: <NotFound />, // 404路由配置
    },
  ],
}

9. 路由模式

React Router支持两种路由模式:history模式和hash模式,分别由createBrowserRoutercreateHashRouter函数创建。

  • history模式:URL表现为url/login,依赖HTML5 history对象的pushState事件,需要后端支持。
  • hash模式:URL表现为url/#/login,依赖监听hashChange事件,不需要后端支持。

以上就是前端路由的快速上手指南,希望对你有所帮助。

标签:index,const,router,React,import,Router,path,路由
From: https://blog.csdn.net/m0_46423830/article/details/140711049

相关文章

  • 使用React脚手架时npx速度慢的问题解决
    React作为目前最流行的前端框架之一,其开发效率和组件化特性受到了开发者的广泛欢迎。然而在使用React脚手架工具,如create-react-app进行项目初始化时,有时会遇到npx命令执行速度非常慢的问题。本文将探讨这一问题的原因,并提供一些有效的解决方案。问题分析npx是Node.js包管......
  • BGP(Border Gateway Protocol,边界网关协议)劫持是指恶意或非法地篡改BGP路由信息的行为
    BGP(BorderGatewayProtocol,边界网关协议)劫持是指恶意或非法地篡改BGP路由信息的行为。BGP是互联网上用来交换路由信息的主要协议之一,它负责决定网络数据包应该如何从一个网络路由到另一个网络。BGP劫持可以分为两种主要类型:前缀劫持(PrefixHijacking):在前缀劫持中,攻击者发送......
  • cpanel 上的 React-django - MIME 类型('text/html')不是受支持的样式表
    我正在开发一个React-Django应用程序,并且它在本地运行当我将其安装在运行cpanel的服务器上时,它只显示一个空白页面。我的提供者检查了它并做了以下陈述:python应用程序在cpanel上正确安装错误原因应该在开发者端找到我制作......
  • 一文彻底搞懂浏览器事件机制、事件委托、事件冒泡、事件循环、Event Loop、react事件
    一、事件是什么?事件模型?事件是用户操作网页时发生的交互动作,比如click/move,事件除了用户触发的动作外,还可以是文档加载,窗口滚动和大小调整。事件被封装成一个event对象,包含了该事件发生时的所有相关信息(event的属性)以及可以对事件进行的操作(event的方法)。事件是用......
  • react18+antdPro可编辑表格的使用和数据联动
    在项目中经常会遇到这样的需求表格数据是需要编辑的而且有联动的需求,比如结论是单选形式选了存疑的才能选存疑类型然后会在上面tag显示对应的人数存疑>0人就显红,符合要求小于总数就显红而且选择为符合要求后还要清空存疑类型在vue中这很好实现得益于v-model......
  • React——useEffect和自定义useUpdateEffect
    useEffect是React的一个内置Hook,用于在组件渲染后执行副作用(例如数据获取、订阅或手动更改DOM)。它将在第一次渲染后和每次更新后都会执行。useEffect(()=>{//这里的代码将在组件挂载和更新时执行。},[dependencies]);//dependencies数组控制effect的重新执行。......
  • D-Link DSL-2740EL路由器漏洞报告
    验证视频.mp4模拟使用FirmAE一键模拟./init.shsudo./run.sh-rdlinkDSL.img然后通过nb转发到宿主机./nb-tran7070192.168.1.1:80漏洞点sprintf函数没有任何检测直接拼接ip,并且只检测了一个ip格式是否正确,所以只需要合理构造rop链即可攻击成功。pocPOST/cgi-......
  • 华为路由器漏洞CVE-2017-17215
    固件获取https://github.com/Vu1nT0tal/IoT-vulhub/tree/master/HUAWEI/CVE-2017-17215/firmware提取binwalk-MerHG532eV100R001C01B020_upgrade_packet.bin启动qemu-systemsudoqemu-system-mips-Mmalta-kernelvmlinux-3.2.0-4-4kc-malta-hdadebian_wheezy_mips......
  • Django DRF安装设置 序列化器ModelSerializer 视图ModelViewSet 路由url 串讲
    在DjangoRESTFramework(DRF)中,重新编写API视图通常涉及几个步骤。以下是一个简单的示例,展示如何定义和注册视图集、序列化器和路由,以便你可以创建、读取、更新和删除(CRUD)数据。1.定义序列化器#serializers.pyfromrest_frameworkimportserializersfrom.models......
  • 【React】useState:状态更新规则详解
    文章目录一、基本用法二、直接修改状态vs使用`setState`更新状态三、对象状态的更新四、深层次对象的更新五、函数式更新六、优化性能的建议在React中,useState是一个非常重要的Hook,用于在函数组件中添加状态管理功能。正确理解和使用useState更新状态的规......