IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> react路由v6版本NavLink的两个小坑 -> 正文阅读

[JavaScript知识库]react路由v6版本NavLink的两个小坑

本人菜鸟,是按照文档进行学习的,今遇到两个小坑,现记录如下:

第一点,当前版本的NavLink的style或者className当中的isActive,不需要你对isActive进行任何操作,基本上照官网抄就可以了,会自动对isActive属性进行切换。在我看到相关文章中,好像在之前的版本中习惯使用内部的state对isActive进行true到false的转换。

当然,以上只是一个小问题,最重要的是第二点

第二点,NavLink现在的重点确实放在了nav上,按照我的实验,只有当NavLink组件放在用作“顶层导航”的时候,才能正常工作,也就是才能正常显示出你所配置的active的样式。以下是一段伪代码,用来解释什么是“顶层导航”

//nav是顶层的路由组件
function Nav () {
  return (
    <>
      <main>
        <h2>欢迎来到Nav模块</h2>
        <p>该模块是导航模块,用来测试相关功能</p>
      </main>
      <nav>
        {/* 通向Counter组件 */}
        <NavLink className={({ isActive }) => isActive ? "green" : "red"} to="/counter">Counter组件</NavLink>
        <br />
        {/* 通往路由测试页面 */}
        <NavLink className={({ isActive }) => isActive ? "green" : "red"} to='/routerTest'>routerTest</NavLink>
      </nav>
      {/* 下面是子组件的呈现地区,实际上就是vue的router-view */}
      <Outlet />
    </>
  );
}

以上是第一层级的组件,分别通向Counter和路由测试组件,这里面的NavLink就是第一层级的link导航,是能够正常工作的,能调动green的样式接下来再看Nav组件的“路由导航子组件”

function RouterTest () {
    const params1 = '参数一号准备就绪'
    const params2 = '参数二号准备就绪'
    
    return (
        <>
            <h1>欢迎来到RouterTest模块</h1>
            {/* 第一个普通link*/}
            <Link to={`/routerTest/${params1}`}>ShowParams</Link>
            <br />
            {/* 第二个测试用的NavLink,这个因为是第二层级的Link,是不会激发active样式的 */}
            <NavLink
                // className={({ isActive }) => isActive ? "active" : "notActive"}
                to={`/routerTest/${params2}`} >
                NavLink1
            </NavLink>
            {/* 因为有子路由,所以我们这边还得放一个Outlet */}
            <Outlet />
        </>
    )

}

RouterTests是一个子组件,里面的NavLink不是用来导航的顶层Link,所以不能调动active类的样式,所以不能正常工作。

以上是我的实验所得,本人初学,可能有错误理解,不过在我的实验之中确实呈现的是这个结果

  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2022-02-19 01:03:52  更:2022-02-19 01:05:05 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 11:04:08-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码