React Router 的详细讲解以及基本使用教程

news/2024/7/15 19:19:57 标签: react.js, 前端, 前端框架

背景

最近在学习React,但是众所周知,React是一个单页面应用(SPA)。 “单页面应用”顾名思义:只有一个页面,它是没有路由导航机制的。因此,为了在不刷新整个网页的情况下在不同的视图之间进行切换,我们需要一种路由机制,以便在不同的视图之间切换而不用刷新整个网页.而 React-Router就是目前最好的React路由解决方案

那我们既然要学习和使用React-Router,当然要先理解React-Router是什么?有什么优点?

先理解React-Router是什么?

React Router 是一个基于 React之上的强大路由库,它可以让你向应用中快速地添加视图和数据流,同时保持页面与 URL 间的同步。

React-Router有什么优点?

  1. 完美适配React:React Router是专为React应用程序设计的,与React完美集成。它与React的生命周期和状态管理等特性无缝衔接。
  2. 完美的实现单页应用程序的路由跳转:React Router能够帮我们构建单页应用程序,其中所有的页面内容在初始加载时一次性加载,并通过客户端路由来控制显示不同的组件,而无需重新加载整个页面。让我们的用户拥有更流畅的体验,因为只有相应的组件会被更新,而不会刷新整个页面
  3. 路由配置灵活:React Router提供了灵活的路由配置选项,能够根据应用程序的需求定义和管理路由规则。使用Route组件定义不同的路径和相应的组件,还可以通过参数传递、嵌套路由和重定向等功能来处理更复杂的路由场景。
  4. 支持嵌套路由:React Router允许您在应用程序中创建层次结构的路由。它可以帮助我们构建复杂的页面布局和组件组。我们可以在一个父级路由中定义子级路由,并在相应的组件中嵌套使用。

使用教程

学习使用React Router之前先了解React Router提供的实现导航和路由功能的三个主要组件。

BrowserRouter

BrowserRouter:它的主要作用是为React应用程序提供客户端路由功能。它使用 HTML5 的 history API 来处理URL的变化,并根据URL的路径匹配渲染相应的组件。它通常是应用的根组件,用于包裹整个应用。

代码示例:

ReactDOM.render( 
    <BrowserRouter>
        <App />
    </BrowserRouter>,
    document.getElementById('root') 
);

Route

Route:用于定义路由的规则。作用是声明指定URL路径和要渲染的组件之间的关联,它接受两个主要的属性:pathcomponentpath 属性指定了 URL 的路径,component 属性指定了匹配该路径时要渲染的组件。

代码示例:

<Route path="/home" component={Home} />

Link

Link:这个组件用于创建导航链接。它会生成一个 <a> 标签,并处理点击事件以避免浏览器重新加载页面。你可以使用 to 属性来指定链接的目标路径。

代码示例:

<Link to="/home">Home</Link>

完整示例

import React from 'react';
// 从react-router-dom中导入我们需要使用的路由导航组件
import { BrowserRouter, Route, Link, Routes } from 'react-router-dom';

// 声明我们的组件Home和About
const Home = () => <h1>Home</h1>;
const About = () => <h1>About</h1>;

const App = () => {
    return ( 
    //使用我们的<BrowserRouter>组件包裹整个应用
        <BrowserRouter> 
            <div>
                <nav>
                    <ul>
                        <li>
                        
                       //用Link标签代替<a>标签的写法声明跳转的URL地址,在进行代码打包时会被转换成`<a>`标签 
                       
                            <Link to="/">Home</Link>
                        </li> 
                        <li> 
                            <Link to="/about">About</Link> 
                        </li> 
                    </ul>
                </nav>

      <Routes>
        <Route path="/" exact component={Home} />
        <Route path="/about" component={About} />
      </Routes>
      </div>
    </BrowserRouter>

    );
};

export default App;

http://www.niftyadmin.cn/n/699758.html

相关文章

ARM-异常中断处理概述(五)

文章目录 控制程序执行流程ARM 体系中异常中断种类 控制程序执行流程 在 ARM 体系中通常有以下 3 种方式控制程序的执行流程&#xff1a; 在正常程序中执行过程中&#xff0c;每执行一条 ARM 指令&#xff0c;程序计数寄存器 PC 的值加 4 个字节&#xff1b;每执行一条 Thumb…

微信小程序学习记录2 案例分享<智能家居UI>

效果 思路 页面分为4块 前三块 采用同样的class 替换三张矢量图 绑定三个单片机返回的JSON值 最后一块又分为左右两部分 左边部分 采用switch组件 绑定三个事件 右边部分则是普通的文字

网络作业11【计算机网络】

网络作业11【计算机网络】 前言推荐网络作业11一. 单选题&#xff08;共22题&#xff0c;88分&#xff09;二. 填空题&#xff08;共1题&#xff0c;10分&#xff09;三. 多选题&#xff08;共1题&#xff0c;2分&#xff09; 最后 前言 2023-6-29 17:27:43 以下内容源自《【…

mysql基础3——数据备份与恢复、破解数据库密码

文章目录 一、备份方案二、备份工具mysqldump2.1 备份整张表数据2.2 备份整个库数据 三、全量备份四、差异备份五、数据库密码破解 一、备份方案 备份方案概念特点全量备份对某一个时间点上的所有数据或应用进行完全拷贝。数据恢复快&#xff0c;备份时间长。增量备份在一次全…

idea - 插件之 codeium(安装篇)

idea - 插件之 codeium 插件官网地址&#xff1a;https://codeium.com/ Idea 版本&#xff1a;2021.3.2 关于插件作用就不多做介绍&#xff0c;接下来开始正文。 由于目前有很多博客文章没有对 Idea 安装进行详细的讲解和遇到问题的处理讲解&#xff0c;所以我经过踩坑后&am…

InceptionNext实战:使用InceptionNext实现图像分类任务(二)

文章目录 训练部分导入项目使用的库设置随机因子设置全局参数图像预处理与增强读取数据设置Loss设置模型设置优化器和学习率调整算法设置混合精度&#xff0c;DP多卡&#xff0c;EMA定义训练和验证函数训练函数验证函数调用训练和验证方法 运行以及结果查看测试热力图可视化展示…

从0到1搭建spring cloud alibaba +springboot+nacos+dubbo微服务

版本关系&#xff1a; spring cloud alibaba各组件对应关系 创建父工程&#xff0c;pom.xml配置如下&#xff1a; 由以上版本对应关系&#xff1a; springboot版本&#xff1a;2.3.2.RELEASE spring cloud 版本选择&#xff1a;Hoxton.SR9 spring cloud alibaba版本选择&#…

Java安全——安全管理器

Java安全 安全管理器 Java安全管理器是一个Java安全模型中的一个组件&#xff0c;主要的作用是提高Java应用程序的安全性。Java应用程序中的每个线程都会对安全管理器进行检查&#xff0c;在执行代码之前&#xff0c;会先经过安全管理器的核验&#xff0c;安全管理器根据代码来…