react-router-dom 版本6.18.0中NavLink的api和属性介绍

React Router 是一个基于 React 的路由库,它可以帮助我们在 React 应用中实现页面的切换和路由的管理。而 NavLink 则是 React Router 中的一个组件,它可以帮助我们实现导航栏的样式设置和路由跳转。

在 React Router 版本6.18.0 中,NavLink 组件的 API 和属性有以下几个:

API

  • NavLink:创建一个 NavLink 组件,用于实现导航栏的样式设置和路由跳转。

属性

  • to:指定 NavLink 跳转的路由地址,可以是一个字符串或一个对象。
  • exact:如果为 true,则 NavLink 只会在路径完全匹配时才会被激活。
  • strict:如果为 true,则 NavLink 在匹配时会考虑路径末尾的斜杠。
  • isActive:一个回调函数,用于自定义 NavLink 的激活状态。
  • location:指定 NavLink 的位置信息,可以是一个字符串或一个对象。
  • aria-current:用于设置 NavLink 的 ARIA 当前状态属性。

使用案例和场景

下面我们来看一下 NavLink 的使用案例和场景。

基本使用

首先,我们需要在项目中导入 NavLink 组件:

import { NavLink } from 'react-router-dom';

然后,我们可以使用 NavLink 来创建一个导航链接:

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

这个 NavLink 组件会渲染成一个带有样式的链接,点击它会跳转到指定的路由地址。

设置样式

在 NavLink 中,我们可以通过设置 activeClassName 和 activeStyle 属性来设置激活状态下的样式。例如:

<NavLink to="/home" activeClassName="active">Home</NavLink>

这个 NavLink 组件在激活状态下会添加一个名为 “active” 的类名,我们可以通过 CSS 来设置这个类名下的样式。

.active {
  color: red;
}

除了 activeClassName 属性,我们还可以使用 activeStyle 属性来设置激活状态下的样式,例如:

<NavLink to="/home" activeStyle={{ color: 'red' }}>Home</NavLink>

这个 NavLink 组件在激活状态下会应用一个内联样式,将链接的颜色设置为红色。

精确匹配

有时候,我们希望 NavLink 只在路径完全匹配时才会被激活,这时可以使用 exact 属性。例如:

<NavLink to="/home" exact>Home</NavLink>

这个 NavLink 组件只会在路径为 “/home” 时才会被激活,如果路径为 “/home/other”,则不会被激活。

严格匹配

有时候,我们希望 NavLink 在匹配时考虑路径末尾的斜杠,这时可以使用 strict 属性。例如:

<NavLink to="/home/" strict>Home</NavLink>

这个 NavLink 组件只会在路径为 “/home/” 时才会被激活,如果路径为 “/home”,则不会被激活。

自定义激活状态

有时候,我们希望 NavLink 的激活状态不仅仅是路径匹配,还要满足一些其他的条件,这时可以使用 isActive 属性。例如:

<NavLink to="/home" isActive={(match, location) => {
  // 自定义激活状态的逻辑
  return match && location.search === '?active=true';
}}>Home</NavLink>

这个 NavLink 组件会根据自定义的激活状态逻辑来判断是否激活。
使用逻辑

<NavLink
       className={({ isActive }) => (isActive ? " selectnav" : "")}
       to={ele.path}>
  {ele.name}
</NavLink>

默认使用
在这里插入图片描述
根据路径默认匹配 进行激活 激活的默认的class active

在这里插入图片描述

设置位置信息

有时候,我们希望 NavLink 的位置信息不是当前的路由地址,而是其他的地址,这时可以使用 location 属性。例如:

<NavLink to="/home" location={{ pathname: '/other' }}>Home</NavLink>

这个 NavLink 组件的位置信息为 “/other”,但是点击它时会跳转到 “/home”。

设置 ARIA 当前状态属性

最后,我们可以使用 aria-current 属性来设置 NavLink 的 ARIA 当前状态属性。例如:

<NavLink to="/home" aria-current="page">Home</NavLink>

这个 NavLink 组件会在激活状态下添加一个 aria-current 属性,将它的值设置为 “page”。

代码和注释

最后,我们来看一下完整的代码和注释:

import { NavLink } from 'react-router-dom';

function App() {
  return (
    <nav>
      {/* 基本使用 */}
      <NavLink to="/home">Home</NavLink>
      
      {/* 设置样式 */}
      <NavLink to="/home" activeClassName="active">Home</NavLink>
      <NavLink to="/home" activeStyle={{ color: 'red' }}>Home</NavLink>
      
      {/* 精确匹配 */}
      <NavLink to="/home" exact>Home</NavLink>
      
      {/* 严格匹配 */}
      <NavLink to="/home/" strict>Home</NavLink>
      
      {/* 自定义激活状态 */}
      <NavLink to="/home" isActive={(match, location) => {
        // 自定义激活状态的逻辑
        return match && location.search === '?active=true';
      }}>Home</NavLink>
      
      {/* 设置位置信息 */}
      <NavLink to="/home" location={{ pathname: '/other' }}>Home</NavLink>
      
      {/* 设置 ARIA 当前状态属性 */}
      <NavLink to="/home" aria-current="page">Home</NavLink>
    </nav>
  );
}

以上就是 React Router 版本6.18.0 中 NavLink 的 API 和属性介绍、基本使用案例和场景,以及代码和注释。希望可以帮助大家更好地使用 React Router 中的 NavLink 组件。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【用unity实现100个游戏之15】开发一个类保卫萝卜的Unity2D塔防游戏3(附项目源码)

文章目录 先看本次实现的最终效果前言绘制炮塔UI炮塔转向敌人生成炮弹旋转我们的子弹对敌人造成伤害&#xff0c;回收子弹自动发射子弹添加攻击间隔显示伤害字体设计通用泛型单例创建更多炮塔升级增加伤害升级缩短攻击间隔添加货币杀死敌人获取金币源码完结 先看本次实现的最终…

epoll协程简述

协程的由来 【协程第二话】协程和IO多路复用更配哦~_哔哩哔哩_bilibili 协程类别:有栈(静态)协程, 无栈(动态协程) 协程epoll 当有需要等待的时候,就切换出去,要用汇编保存这个栈rsp 运行时,要根据协程上下文恢复出这个栈

Beego之Bee工具使用

1、bee工具使用 bee 工具是一个为了协助快速开发 Beego 项目而创建的项目&#xff0c;通过 bee 你可以很容易的进行 Beego 项目的创 建、热编译、开发、测试、和部署。Bee工具可以使用的命令&#xff1a; [rootzsx ~]# bee 2023/02/18 18:17:26.196 [D] init global config…

Java基础笔记

1.数据类型在java语言中包括两种: 第一种:基本数据类型 基本数据类型又可以划分为4大类8小种: 第一类:整数型 byte , short,int, long(没有小数的&#xff09; 第二类:浮点型 float,aouble(带有小数的&#xff09; 第三类:布尔型 boole…

【Rust】快速教程——模块mod与跨文件

前言 道尊&#xff1a;没有办法&#xff0c;你的法力已经消失&#xff0c;我的法力所剩无几&#xff0c;除非咱们重新修行&#xff0c;在这个世界里取得更多法力之后&#xff0c;或许有办法下降。——《拔魔》 \;\\\;\\\; 目录 前言跨文件mod多文件mod 跨文件mod //my_mod.rs…

高能分享:软件测试十大必问面试题(附带答案)

1 介绍之前负责的项目 参考答案&#xff1a;先大概描述一下这个项目是做什么的&#xff08;主要功能&#xff09;&#xff0c;包括哪些模块&#xff0c;是什么架构的&#xff08;B/S、C/S、移动端&#xff1f;&#xff09;&#xff0c;你在其中负责哪些模块的测试。期间经历了几…

Java后端工程师有福啦,CSDN里找到宝藏

目录 一、说明 二、操作步骤 一、说明 CDSN也有系统的java学习资料&#xff0c;有事无事翻翻挺好。 二、操作步骤 1、在CSDN首页顶端左边&#xff0c;点【学习】 2、在【学习】的页面&#xff0c;往下滑&#xff0c;找到【职业路线】 3、java后端工程师【入门版】【进阶版】…

Python基础:输入输出详解-输出字符串格式化

Python中的输入和输出是编程中非常重要的方面。 1. 输入输出简单介绍 1.1 输入方式 Python中的输入可以通过input()函数从键盘键入&#xff0c;也可以通过命令行参数或读取文件的方式获得数据来源。 1&#xff09;input()示例 基本的input()函数&#xff0c;会将用户在终端&…

Unity中Shader纹理的环绕方式

文章目录 前言一、修改环绕方式前的设置准备二、在纹理的设置面板可以修改环绕方式三、在Shader中&#xff0c;实现纹理的环绕方式切换1、在属性面板定义一个和纹理面板一样的纹理环绕方式下拉框2、在Pass中&#xff0c;定义枚举对应的变体3、在片元着色器中&#xff0c;纹理采…

腾讯云服务器收费标准是多少?腾讯云服务器收费标准表

你是否曾被繁琐复杂的服务器租赁费用搞得头昏脑胀&#xff1f;看着一堆参数和计费方式却毫无头绪&#xff1f;别担心&#xff0c;这篇文章就来帮你解决这个问题&#xff01;我们今天就来揭秘一下腾讯云服务器的收费标准&#xff0c;让大家轻松明白地知道如何租用腾讯云服务器。…

2023.11.17-hive调优的常见方式

目录 0.设置hive参数 1.数据压缩 2.hive数据存储格式 3.fetch抓取策略 4.本地模式 5.join优化操作 6.SQL优化(列裁剪,分区裁剪,map端聚合,count(distinct),笛卡尔积) 6.1 列裁剪: 6.2 分区裁剪: 6.3 map端聚合(group by): 6.4 count(distinct): 6.5 笛卡尔积: 7…

Go 语言变量类型和声明详解

在Go中&#xff0c;有不同的变量类型&#xff0c;例如&#xff1a; int 存储整数&#xff08;整数&#xff09;&#xff0c;例如123或-123float32 存储浮点数字&#xff0c;带小数&#xff0c;例如19.99或-19.99string - 存储文本&#xff0c;例如“ Hello World”。字符串值用…

2024年山东省职业院校技能大赛中职组“网络安全”赛项竞赛试题-C

2024年山东省职业院校技能大赛中职组 “网络安全”赛项竞赛试题-C 一、竞赛时间 总计&#xff1a;360分钟 二、竞赛阶段 竞赛阶段 任务阶段 竞赛任务 竞赛时间 分值 A、B模块 A-1 登录安全加固 180分钟 200分 A-2 本地安全策略设置 A-3 流量完整性保护 A-4 …

技术分享 | 如何写好测试用例?

对于软件测试工程师来说&#xff0c;设计测试用例和提交缺陷报告是最基本的职业技能。是非常重要的部分。一个好的测试用例能够指示测试人员如何对软件进行测试。在这篇文章中&#xff0c;我们将介绍测试用例设计常用的几种方法&#xff0c;以及如何编写高效的测试用例。 ## 一…

337. 打家劫舍 III

小偷又发现了一个新的可行窃的地区。这个地区只有一个入口&#xff0c;我们称之为 root 。 除了 root 之外&#xff0c;每栋房子有且只有一个“父“房子与之相连。一番侦察之后&#xff0c;聪明的小偷意识到“这个地方的所有房屋的排列类似于一棵二叉树”。 如果 两个直接相连…

学习指南:如何快速上手媒体生态一致体验开发

过去开发者们在使用多媒体能力时&#xff0c;往往会遇到这样的问题&#xff0c;比如&#xff1a;为什么我开发的相机不如系统相机的效果好&#xff1f;为什么我的应用和其他的音乐一起发声了&#xff0c;我要怎么处理&#xff1f;以及我应该怎么做才能在系统的播控中心里可以看…

talbay---贝叶斯网络分析工具产品介绍

一 简介 talbay是拥有独立知识产权的国产软件&#xff0c;主要功能是贝叶斯网络建模、决策网络建模、概率计算、决策支持、敏感性分析、网络模型验证、机器学习等。talbay以用户为中心&#xff0c;简单易用, 计算准确高效&#xff0c;分析全面多样&#xff0c;在应用成熟理论及…

2023年“华为杯”第二十届中国研究生数学建模成绩数据分析(末尾有吃席群)

目录 0引言1、数据大盘1.1 官方数据1.2 分赛题统计数据1.2.1 A-F 获奖数1.2.2 A-F 获奖率 2、分学校统计获奖情况&#xff08;数模之星没有统计&#xff09;3、 数模之星4、吃席群5、写在最后的话 0引言 2023年华为杯成绩于2023年9月22-26日顺利举行&#xff0c;来自国际和全国…

23111706[含文档+PPT+源码等]计算机毕业设计SSM框架网上书城全套微信支付电商购物

文章目录 **软件开发环境及开发工具&#xff1a;****项目功能介绍&#xff1a;****论文截图&#xff1a;****实现&#xff1a;****代码片段&#xff1a;** 编程技术交流、源码分享、模板分享、网课教程 &#x1f427;裙&#xff1a;776871563 软件开发环境及开发工具&#xff…

MyBatis解析全局配置文件

MyBatis解析全局配置文件 MyBaits基础应用&#xff1a; 文档&#xff1a;MyBatis 链接&#xff1a;http://note.youdao.com/noteshare?id5d41fd41d970f1af9185ea2ec0647b64 传统JDBC和Mybatis相比的弊病 传统JDBC ​ Connection conn null; PreparedStatement pstmt …