【前端知识】React 基础巩固(三十九)——React-Router的基本使用

React 基础巩固(三十九)——React-Router的基本使用

一、Router的基本使用

Router中包含了对路径改变的监听,并且会将相应的路径传递给子组件。

Router包括两个API:

  1. BrowserRouter使用history模式

  2. HashRouter使用hash模式(路径后面带有#号)

尝试在项目中使用HashRouter:

  1. 安装Router

    npm install react-router-dom
    
  2. 在 index.js 中引入并使用HashRouter

    import React from "react";
    import ReactDOM from "react-dom/client";
    import App from "./App";
    import { BrowserRouter, HashRouter } from "react-router-dom";const root = ReactDOM.createRoot(document.getElementById("root"));
    root.render(<React.StrictMode><HashRouter><App /></HashRouter></React.StrictMode>
    );
    

二、路由映射配置

  1. Routes:包裹所有的Route,在其中匹配一个路由(Router5.x使用的是Switch组件)

  2. Route:Route用于路径的匹配

    • path属性:用于设置匹配到的路径
    • element属性:设置匹配到路径后,渲染的组件(Router5.x使用的是component属性)
    • exact:精准匹配,只有精准匹配到完全一致的路径,才会渲染对应的组件(Router6.x不再支持该属性)
  3. Link和NavLink

    • 通常路径的跳转是使用 Link 组件,最终会被渲染成a元素
    • NavLink 是在Link基础之上增加了一些样式属性
    • to 属性:用于设置跳转到的路径

尝试构建界面并配置路由映射,在App.jsx中引入Home和About组件,并通过Routes、Route、Link实现简单的路由跳转:

import React, { PureComponent } from "react";
import { Route, Routes, Link } from "react-router-dom";
import Home from "./pages/Home";
import About from "./pages/About";export class App extends PureComponent {render() {return (<div className="app"><div className="header"><span>header</span><div className="nav"><Link to="/home">首页</Link><Link to="/about">关于</Link></div><hr /></div><div className="content">{/* 映射关系: path => Component */}<Routes><Route path="/home" element={<Home />} /><Route path="/about" element={<About />} /></Routes></div><div className="footer">Footer</div></div>);}
}export default App;

查看效果:

image-20230730155901266

image-20230730155926793

采用NavLink后,可设置active的路由样式:

  1. 在src/style.css中配置active样式:

    .nav .active{color: red;font-size: 18px;
    }
    
  2. 修改App.jsx中的Link为NavLink:

    import React, { PureComponent } from "react";
    import { Route, Routes, NavLink } from "react-router-dom";
    import Home from "./pages/Home";
    import About from "./pages/About";
    import "./style.css";export class App extends PureComponent {render() {return (<div className="app"><div className="header"><span>header</span><div className="nav"><NavLink to="/home">首页</NavLink><NavLink to="/about">关于</NavLink></div><hr /></div><div className="content">{/* 映射关系: path => Component */}<Routes><Route path="/home" element={<Home />} /><Route path="/about" element={<About />} /></Routes></div><div className="footer">Footer</div></div>);}
    }export default App;
  3. 查看效果:

    image-20230730160630983

image-20230730161132539

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/15625.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

RBAC三级树状菜单实现(从前端到后端)未完待续

1、表格设计 RBAC 2、前端路由 根据不同的用户id显示不同的菜单。 根据路由 3、多级菜单 展示所有权限&#xff0c;并且根据当前用户id展示它所属的角色的所有菜单。 前端树状展示 思路&#xff1a; 后端&#xff1a;传给前端map&#xff0c;map里1个是所有菜单&am…

[golang gin框架] 44.Gin商城项目-微服务实战之后台Rbac微服务之权限的增删改查微服务

上一节讲解了[golang gin框架] 43.Gin商城项目-微服务实战之后台Rbac微服务之管理员的增删改查以及管理员和角色关联,这里讲解权限管理Rbac微服务权限的增删改查微服务 一.实现后台权限管理Rbac之权限增删改查微服务服务端功能 1.创建Access模型 要实现权限的增删改查,就需要…

NIDEC COMPONENTS尼得科科宝滑动型DIP开关各系列介绍

今天AMEYA360对尼得科科宝电子滑动型DIP开关各系列参数进行详细介绍&#xff0c;方便大家选择适合自己的型号。 系列一、滑动型DIP开关 CVS 针脚数&#xff1a;1, 2, 3, 4, 8 安装类型&#xff1a;表面贴装&#xff0c;通孔 可水洗&#xff1a;无 端子类型&#xff1a;PC引脚(只…

RPC与REST有什么区别?

原文&#xff1a;RPC与REST有什么区别&#xff1f; 背景 好多开发的同学在工作中&#xff0c;经常分不清RPC和REST的区别&#xff0c;导致经常沟通不在一个层次上。甚至有些同学把这两个当成同一个东西。 RPC与REST的区别&#xff1f; 对比名称 rpc rest 备注 架构风格 RP…

[个人笔记] Windows配置NTP时间同步

Windows - 运维篇 第六章 Windows配置NTP时间同步 Windows - 运维篇系列文章回顾Windows配置NTP时间同步域控环境的NTP配置工作组环境的NTP配置Windows的CMD部分命令集 参考来源 系列文章回顾 第一章 迁移WinSrv系统到虚拟机 第二章 本地安全策略xcopy实现实时备份文件夹内容 …

重发布及路由策略

目录 重发布 作用 条件 规则 名词解释点 点 向 单点重发布 双点重发布 路由策略 控制层流量和数据层流量 抓流量 ACL列表 前缀列表( ip-prefix) 实例演示 做策略 过滤策略(过滤器-策略) 路由策略(route-policy) 基本配置 路由策略使用 配置实验 重发布 在…

【C++】反向迭代器的模拟实现通用(可运用于vector,string,list等模拟容器)

文章目录 前言一、反向迭代器封装&#xff08;reverseiterator&#xff09;1.构造函数1解引用操作.3.->运算符重载4.前置&#xff0c;后置5.前置--&#xff0c;后置--6.不等号运算符重载7.完整代码 二、rbegin&#xff08;&#xff09;以及rend&#xff08;&#xff09;1.rb…

数学分析:外微分

先回顾下微分的概念&#xff0c;首先我们找到一个道路x&#xff0c;它是关于时间t的函数&#xff0c;然后我们可以得到一个速度&#xff0c;也就是切向量&#xff0c;所有道路的切向量组成了切空间。如果从泛函角度来理解&#xff0c;它应该是一个求偏导的基。是一个向量。而微…

国内 github.com经常打不开的解决办法

1、打开网站http://tool.chinaz.com/dns/ 2、在A类型中填写github.com,再点击监测按钮 3、复制下面任意一个ip 4、打开电脑文件C:\Windows\System32\drivers\etc下的host文件 5、在host文件的最后一刚加入刚才复制的IP 6、重新打开GitHub

[内测招募] IDEA 插件 X-ChatGPT 内测预览版 支持自定义 ChatGPT 回调函数 释放 AI 的无限可能性

X-ChatGPT 独创的 [项目感知] 功能 打造更精准、更智能、更懂你 的专属 ai 编程助手 这个插件是一款基于开源项目 ChatGPT-Next-Web的 IntelliJ IDEA 平台的插件 价格 &#xff1a;免费、速率限制 每小时/100 次/ip 使用方式 &#xff1a;在 IDEA 插件商店中搜索 X-ChatGPT…

DNP透明屏有哪些优点?

DNP透明屏是一种新型的显示技术&#xff0c;它能够将图像或视频直接投射到透明的屏幕上&#xff0c;使得观众可以同时看到屏幕后面的实物。 这种技术在广告、展览、商场等场合得到了广泛的应用。 DNP透明屏的工作原理是利用光学投影技术&#xff0c;将图像或视频通过投影仪投射…

品牌活动 | 阿里云云原生技术实践营:大模型+CloudOS,实现企业智能化

近日&#xff0c;由阿里云举办的“云原生技术实践营-应用和容器实践专场”在广州顺利开展。行云创新CEO马洪喜作为受邀嘉宾之一&#xff0c;参加了本次活动&#xff0c;分享了主题为“API大语言模型&#xff0c;以非侵入式实现企业业务智能化变革”的演讲&#xff0c;向参会者展…

json-server详解

零、文章目录 json-server详解 1、简介 Json-server 是一个零代码快速搭建本地 RESTful API 的工具。它使用 JSON 文件作为数据源&#xff0c;并提供了一组简单的路由和端点&#xff0c;可以模拟后端服务器的行为。github地址&#xff1a;https://github.com/typicode/json-…

芯片制造详解.刻蚀原理.学习笔记(五)

本篇笔记是看完原视频后的整理和补充&#xff0c;建议各位观看原视频&#xff0c;这里附上地址。 如何雕刻芯片&#xff1a;刻蚀原理&#xff5c;芯片制造详解05 芯片制造详解.刻蚀原理.学习笔记 五 一、刻蚀技术的分类二、刻蚀中三个关键指标2.1 刻蚀速率2.2 选择比2.3 方向性…

pytorch学习——线性神经网络——1线性回归

概要&#xff1a;线性神经网络是一种最简单的神经网络模型&#xff0c;它由若干个线性变换和非线性变换组成。线性变换通常表示为矩阵乘法&#xff0c;非线性变换通常是一个逐元素的非线性函数。线性神经网络通常用于解决回归和分类问题。 一.线性回归 线性回归是一种常见的机…

RISC-V公测平台发布 · 如何在SG2042上玩转k3s

前言 Kubernetes是一个开源的容器管理平台&#xff0c;通过Kubernetes的跨集群管理功能&#xff0c;用户可以方便地进行应用程序的复制、迁移和跨云平台的部署。 而k3s作为Kubernetes的轻量级发行版&#xff0c;相比传统的Kubernetes具有更小的二进制文件大小和更低的资源消耗…

#typescript 使用file-saver模块#

场景&#xff1a;前端使用file-saver模块做导出文档的时候&#xff0c;出现两个错误 1&#xff1a;npm run build 提示找不到模块&#xff0c;如图 解决方法&#xff1a; 先卸载&#xff0c;不管是否安装都先要卸载 ,然后安装&#xff1a; npm uninstall file-saver npm…

流星特效案例代码

实际效果&#xff0c;代码下载即可使用 流星图片 <!-- 描述: 流星特效 作者: Jack GUO 日期: 20230727 --> <template> <div class"wrap-container sn-container"> <div class"pd-main-left"> <div class"yun-container&…

Flutter环境搭建踩坑集锦

Flutter 背景准备工作先检查一下自己的电脑&#xff0c;看一下是不是满足配置要求下载安装配置环境下载安装JDK下载安装Android studio下载Flutterflutter doctor故障Android license status unknownNetwork resources 故障 后记 背景 发现一个不错的框架Flutter&#xff0c;听…