0602基础使用(一)-react路由-react

news2024/11/26 7:43:16

文章目录

    • 1 基本使用
      • 1.1 安装js库
      • 1.2 使用示例
      • 1.3 总结
    • 2 路由组件与一般组件
      • 2.1 路由组件
      • 2.2 路由组件与普通组件示例
      • 2.3 总结
    • 3 NavLink组件
      • 3.1 NavLink 简介
      • 3.2 NavLink实现高亮与自定义样式
    • 结语

1 基本使用

1.1 安装js库

react-router-dom,react的一个插件库,用于实现SPA应用,基于react的项目基本都会用到。

当前项目安装命令

npm i react-router-dom 
// 或者
yarn add react-router-dom

1.2 使用示例

示例效果图1.2-1如下所示:

在这里插入图片描述

静态页面我们不在给出,这里直接展示App.jsx和About与Home组件代码。

App.jxs组件代码1.2-1如下所示:

import React, { Component } from 'react'
import { Link, Route } from "react-router-dom";
import About from './components/About'
import Home from './components/Home'

export default class App extends Component {
  render() {
    return (
      <div>
        <div className="row">
          <div className="col-xs-offset-2 col-xs-8">
            <div className="page-header"><h2>React Router Demo</h2></div>
          </div>
        </div>
        <div className="row">
          <div className="col-xs-2 col-xs-offset-2">
            <div className="list-group">
              {/* 原生html中,<a></a>调整不同的页面 */}
              {/* <a className="list-group-item" href="./about.html">About</a>
            <a className="list-group-item active" href="./home.html">Home</a> */}
              {/* react中靠路由链接实现组件切换--编写路由链接 */}
              <Link className='list-group-item' to="/about">About</Link>
              <Link className='list-group-item' to="/home">Home</Link>
            </div>
          </div>
          <div className="col-xs-6">
            <div className="panel">
              <div className="panel-body">
                {/* 注册路由 */}
                  <Route path="/about" component={About} />
                  <Route path="/home" component={Home} />
              </div>
            </div>
          </div>
        </div>
      </div>
    )
  }
}

About组件代码1.2-2如下所示:

import React, { Component } from 'react'

export default class About extends Component {
  render() {
    return (
      <h3>我是About的内容</h3>
    )
  }
}

Home组件代码1.2-3如下所示:

import React, { Component } from 'react'

export default class Home extends Component {
  render() {
    return (
      <h3>我是Home的内容</h3>
    )
  }
}

index.js代码1.2-4如下所示:

// 引入react核心库
import React from "react";
// 引入react-dom
import ReactDOM from 'react-dom/client'
// 引入路由器
import { BrowserRouter } from "react-router-dom";
// 引入App组件
import App from './App'

// 渲染组件到页面
const root = ReactDOM.createRoot(document.getElementById('root'))
root.render(
  <BrowserRouter>
    <App />
  </BrowserRouter>
)

1.3 总结

路由的基本使用:

  • 导航区a标签改为Link标签,<Link t="/xxx">Demo</Link>
  • 展示区些Route标签进行路径的匹配,<Route path='/xxx' component={Demo}/>
  • <App/>最外侧包裹一个<BrowserRouter>或<HashRouter>

2 路由组件与一般组件

2.1 路由组件

React Router 由三个主要的组件构成:

  1. <BrowserRouter>:在浏览器端使用 HTML5 的 history API 实现路由;
  2. <HashRouter>:在浏览器端使用 URL 中的 hash 实现路由;
  3. <MemoryRouter>:在内存中实现路由,适用于服务器渲染等场景。

在这些 Router 组件内部,你可以使用 <Route> 组件来定义路由规则,并使用 <Link><NavLink> 组件来创建链接。

路由组件和一般组件在 React 中有一些区别。

路由组件是指用于处理路由的组件,它们通常与特定的 URL 相关联,当 URL 匹配时会被渲染。路由组件的定义方式可以根据所使用的路由库而异,但通常都需要在组件中定义路由规则,如 <Route> 组件。

一般组件是指用于渲染 UI 的组件,它们通常是应用程序的一部分,并且可以在任何地方使用。一般组件可以被其他组件嵌套或包含,它们通常不需要处理 URL 相关的逻辑。

2.2 路由组件与普通组件示例

下面我们还上以#1示例为例,我们把导航封装为普通组件,其他同上。

About和Home组件为路由组件我们放入pages文件夹下,普通组件放在components文件夹下。

Header组件代码2-1如下所示:

import React, { Component } from 'react'

export default class Header extends Component {
  render() {
    // console.log('Header组件收到的props:', this.props);
    return (
      <div className="page-header"><h2>React Router Demo</h2></div>
    )
  }
}

App.jsx相应部分替换为<Header />

然后我们看下普通组件与路由组件接收的props,普通组件默认为空,我们看下路由组件接收了什么?

在这里插入图片描述

2.3 总结

路由组件与一般组件的区别:

  • 写法不同
    • 一般组件:<Demo />
    • 路由组件:<Route path=“/demo” component={Demo}/>
  • 存放位置不同(约定非强制):
    • 一般组件:components文件夹下
    • 路由组件:pages文件夹下
  • 接收到的props:
    • 一般组件:传递什么属性,接收什么props
    • 路由组件:接收到固定的三个属性,具体含义随用随解释
      • history
        • go: f go(n)
        • goBack: f goBack()
        • goForward: f goForard()
        • push: f push(path, state)
        • replace: f replace(path, state)
      • location:
        • pathname: “/xxx”
        • search: “”
        • state: undefined
      • match:
        • params: {}
        • path: “/xxx”
        • url: “/xxx”

3 NavLink组件

3.1 NavLink 简介

NavLink 是 React Router 提供的一个组件,它是 Link 的一个特殊版本,可以用于为当前活动的路由添加样式。

NavLink 的用法和 Link 类似,都是通过 to 属性指定要跳转的 URL,但 NavLink 会在当前路由与 to 属性指定的 URL 匹配时,自动添加一个名为 active 的 CSS 类名,可以用于设置当前路由的样式。如果不希望使用 active 类名,可以通过 activeClassName 属性来指定其他类名。

3.2 NavLink实现高亮与自定义样式

因为我们样式使用的是bootstrap.css,当NavLink指定样式名称为"active"时和bootstrap.css的高亮样式重名。即如果想实现路由链接高亮效果,可以直接在NavLink标签些active 属性。

以#2中示例为例,我们把Link标签替换为NavLink,App.jsx代码3.1如下:

<NavLink className='list-group-item' to="/about">About</NavLink>
<NavLink className='list-group-item' to="/home">Home</NavLink>

其他同上

下面我们自定义样式,直接在首页,样式代码如下:

  <style>
    .g2zh{
      background-color: orange !important;
      color: white !important;
    }
  </style>

NavLink标签指定样式名称,如下:

<NavLink activeClassName="g2zh" className='list-group-item' to="/about">About</NavLink>
<NavLink activeClassName="g2zh" className='list-group-item' to="/home">Home</NavLink>

效果如下图3.2-1所示,

在这里插入图片描述

在这里插入图片描述

结语

❓QQ:806797785

⭐️源代码仓库地址:https://github.com/gaogzhen/react-staging.git

参考:

[1]React视频教程[CP/OL].2020-12-15.p77-79.

[2]React官网[CP/OL].

[3]ChatGPT[CP/OL].

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

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

相关文章

flink on k8s提交任务

目录 相关文档前置准备构建镜像提交任务 相关文档 https://nightlies.apache.org/flink/flink-docs-release-1.13/docs/deployment/resource-providers/native_kubernetes/ 前置准备 flink的lib目录下放入两个依赖 bcpkix-jdk15on-1.68.jar bcprov-jdk15on-1.69.jar 创建用户…

Vue过滤器的基本使用

过滤器 功能&#xff1a;对要显示的数据进行特定格式化后再显示 注意&#xff1a;并没有改变原本的数据&#xff0c;是产生新的对应的数据 声明&#xff1a;过滤器不是必须要用到的东西&#xff0c;而是vue提供处理数据的方式而已&#xff0c;想用就用&#xff0c;不想用可以…

Elasticsearch 实战篇 | 黑马旅游

一、酒店搜索和分页 需求&#xff1a;实现黑马旅游的酒店搜索功能&#xff0c;完成关键字搜索和分页 1、定义实体类&#xff0c;接收前端的参数 如果当搜索条件为空的时候&#xff0c;就返回全部数据&#xff0c;不为空才按照key来搜索 二、条件过滤 修改实体类&#xff0c;…

边缘计算开源项目解读-kubeedge metamanager实现

0 背景 笔者在前面的几篇文章从设备管理和运维的角度解读了kubeedge的相关代码流程和架构。本文将切入kubeedge edgecore的另一个核心业务&#xff0c;即边云协同处理设备元数据相关代码的解读。如果说前面的设备管理和运维并不能体现kubeedge作为边缘计算数据处理平台的特点&a…

【Andoroid】之【APK瘦身】

一、如何查看 APK 的组成 如果要优化 APK 的大小&#xff0c;我们首先需要知道我们编译出来的 APK 都包含哪些东西&#xff0c;然后针对占用大的做裁剪&#xff0c;或者删除不需要的东西&#xff0c;从而达到瘦身的目的。 查看 APK 的内容占用情况很简单&#xff0c;打开 AS …

进程间通信,有名管道(pipe)与无名管道(fifo)的解析与运用,以及代码实现

&#x1f38a;【进程通信与并发】专题正在持续更新中&#xff0c;进程&#xff0c;线程&#xff0c;IPC&#xff0c;线程池等的创建原理与运用✨&#xff0c;欢迎大家前往订阅本专题&#xff0c;获取更多详细信息哦&#x1f38f;&#x1f38f;&#x1f38f; &#x1fa94;本系列…

API网关:开源Apinto网关-应用管理篇

需求痛点 在这互联网高速发展的时代&#xff0c;企业业务系统多、渠道广&#xff0c;如何管理内外部调用端系统具有极大的挑战。 数量方面&#xff1a;API网关需要对各端应用统一管理&#xff0c;例如对企业自身很多的前端应用&#xff0c;包括不限于web应用、移动APP、小程序&…

AI边缘计算智能分析网关灭火器缺失检测与告警的实现过程

AI智能分析网关基于边缘智能&#xff0c;部署了多种AI深度学习算法&#xff0c;可对接入的多路视频流进行智能检测、智能识别等&#xff0c;包括人脸检测与识别、车辆检测与识别、车牌识别、烟火识别、安全帽识别、区域入侵检测等。今天我们来介绍下关于灭火器缺失检测与告警的…

基于Yolov5/Yolov7的DRConv动态区域感知卷积,即插即用,涨点显著!

1.Dynamic Region-Aware Convolution 论文:https://arxiv.org/pdf/2003.12243.pdf 本文提出了一种新的卷积算法,称为动态区域卷积算法(DRConv) ,该算法能够自动将滤波器分配到相应的空间区域,因此,DRConv具有强大的语义表示能力,并完美地保持了平移不变性。 DRConv的…

在IIS7下使用ASP连接ACCESS数据库时提示如下错误的处理方法

“/”应用程序中的服务器错误。 未在本地计算机上注册“microsoft.jet.oledb.4.0”提供程序。 这是由于使用的Win2008系统是64位的&#xff0c;以前Win2003是32位。有以下两种解决方法&#xff1a; 1、修改连接数据库的代码&#xff1a; 如原代码是 DataPath "App_Data…

Eclipse代码提示突然失灵的解决方案

不知道改动了啥&#xff0c;突然间Eclipse的代码提示就失效了&#xff0c;发现缺少后极不方便。 使用快捷键&#xff1a;Alt/ 提示 No Default Proposals 为什么使用快捷键&#xff1a;Alt/ 会提示“No Default Proposals。”呢&#xff1f; 网上提示可能是热键冲突 但是一套…

可调直动差压卸荷阀DDRV-100、DBRV-100

优点&#xff1a; 及时响应压力变化。 低压升。 潜在调节&#xff08;抗震动&#xff09;。 调整位置可锁定。 铝制操作手柄和填料压盖。 坚硬化处理。 可调直动式卸荷阀 ZRV-63 0类 可调直动式卸荷阀 DRV2-080 系列8 可调直动式卸荷阀 DRV-080_*_H 系列8 直动可调式…

微服务架构详解(一)

目录 1.微服务简介 2.微服务技术选型 3.微服务核心组件 3.1.注册中心 3.1.1.注册中心对比 3.2.服务网关 3.2.1.主流API网关对比 3.3.分布式配置中心 3.4.服务容错&#xff08;服务熔断&#xff09; 3.5.负载均衡 3.5.1.负载均衡有好几种实现策略&#xff0c; 3…

读取配置文件(properties、yaml)的八种方法

基础&#xff1a; 一、通过普通的I/O流读取配置文件(BufferedReader) 1、properties文件 2、测试类 public class TestReadProperties {Testpublic void IOReadProperties() throws IOException {// 把配置文件的内容封装进mapMap<String, Object> map new HashMap&l…

视频可视化搭建项目,通过简单拖拽方式快速生产一个短视频

一、开源项目简介 《视搭》是一个视频可视化搭建项目。您可以通过简单的拖拽方式快速生产一个短视频&#xff0c;使用方式就像易企秀或百度 H5 等 h5 搭建工具一样的简单。目前行业内罕有关于视频可视化搭建的开源项目&#xff0c;《视搭》是一个相对比较完整的开源项目&#…

矿井下无人值守变电所电力监控系统的探讨与产品选型

摘要&#xff1a;为了探讨井下无人值守变电所的电力监控系统技术&#xff0c;以西山煤电马兰矿为背景&#xff0c;详细阐述了井下无人值守变电所电力监控系统技术的各项基本参数&#xff0c;如额定工作电压及整机输入视在功率、交换机或监控分站的传输口、高压配电装置的传输口…

(二)ElasticSearch 辅助工具 Kibana 介绍与安装

1、什么是 kibana &#xff1f; Kibana 是一个针对Elasticsearch的开源分析及可视化平台&#xff0c;用来搜索、查看交互存储在Elasticsearch索引中的数据。使用Kibana&#xff0c;可以通过各种图表进行高级数据分析及展示。 Kibana让海量数据更容易理解。它操作简单&#xff…

怎么使用chatgpt,GPT的使用方式解析

怎么使用Chatgpt&#xff1f;这是很多人心中的疑惑&#xff0c;更多的人只是听说过chatgpt的大名&#xff0c;但是具体连见都没见过gpt&#xff0c;那么接下来小编就来给大家详细的介绍一下吧。 一.了解chatgpt ChatGPT是一个由人工智能和自然语言处理技术构建的聊天机器人。通…

[pytorch]FixMatch代码详解-数据加载

原文 FixMatch: Simplifying Semi-Supervised Learning with Consistency and Confidence. 这里还有一个译制版的很方便阅读 FixMatch&#xff1a;通过一致性和置信度简化半监督学习 代码 pytorch的代码有很多版本&#xff0c;我选择了比较简单的一个&#xff1a; unoffi…

记一次某应用虚拟化系统远程代码执行

漏洞简介 微步在线漏洞团队通过“X漏洞奖励计划”获取到瑞友天翼应用虚拟化系统远程代码执行漏洞情报(0day)&#xff0c;攻击者可以通过该漏洞执行任意代码&#xff0c;导致系统被攻击与控制。瑞友天翼应用虚拟化系统是基于服务器计算架构的应用虚拟化平台&#xff0c;它将用户…