react-router中Link标签和a标签有什么区别

 更新时间:2024年06月18日 09:14:56   作者:剑九 六千里  
本文主要介绍了react-router中Link标签和a标签有什么区别,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

1.功能:

  • Link:在单页应用程序(SPA)中提供导航,而不会导致页面重新加载。当用户点击链接时,React会阻止浏览器默认的页面刷新行为,并且使用 react-router 提供的导航方式,只更新 URL 并渲染对应的组件,从而实现单页面应用(SPA)的效果。。
  • a:单击时会导致完整页面重新加载,导航到新 URL

2.性能:

  • Link:由于不会导致页面重新加载,因此它提供更好的用户体验,特别是在 SPA 中。它提高了性能,因为避免了不必要的网络请求。
  • a:完整页面重新加载会导致较慢的用户体验,因为需要从服务器获取新页面。

3.无障碍:

  • Link:提供更好的无障碍性,因为它可以通过键盘聚焦和激活。
  • a:可能不那么无障碍,因为它不提供与按钮或其他交互式元素相同的键盘导航和焦点行为。

使用Link标签

属性描述

to
跳转链接的路径,如 /users/123。

query
已经转化成字符串的键值对的对象。

hash
URL 的 hash 值,如 #a-hash。

注意:React Router 目前还不能管理滚动条的位置,并且不会自动滚动到 hash 对应的元素上。如果需要管理滚动条位置,可以使用 scroll-behavior 这个库。

state
保存在 location 中的 state。

activeClassName
当某个 route 是激活状态时,<Link> 可以接收传入的 className。失活状态下是默认的 class。

activeStyle
当某个 route 是激活状态时,可以将样式添加到链接元素上。

onClick(e)
自定义点击事件的处理方法。如处理 <a> 标签一样 - 调用 e.preventDefault() 来防止过度的点击,同时 e.stopPropagation() 可以阻止冒泡的事件。

其他
你也可以在标签上传入一些你想要的 props,如 title,id,className 等等。

link使用示例:

import { BrowserRouter as Router, Route, Link } from 'react-router-dom';

const Home = () => <h2>Home</h2>;
const About = () => <h2>About</h2>;

const App = () => (
  <Router>
    <div>
      <nav>
        <ul>
          <li>
            <Link to="/">Home</Link>
          </li>
          <li>
            <Link to="/about/">About</Link>
          </li>
        </ul>
      </nav>

      <Route path="/" exact component={Home} />
      <Route path="/about/" component={About} />
    </div>
  </Router>
);

export default App;

区别

<Link> 是 react-router 里实现路由跳转的链接,一般配合 <Route> 使用,react-router 会接管Link 的默认链接跳转行为,区别于传统的页面跳转,<Link> 的“跳转”行为只会触发相匹配的 <Route> 对应的页面内容更新,而不会刷新整个页面。
而 <a> 标签就是普通的超链接了,用于从当前页面跳转到 href 指向的另一个页面(非锚点情况)。

对比<a>,Link组件避免了不必要的重渲染,react-router只更新变化的部分从而减少DOM性能消耗,react的创新之处在于,它利用虚拟DOM的概念和diff算法实现了对页面的"按需更新",react-router很好地继承了这一点

Link做了3件事情:

1、如果Link上定义了onClick方法,则执行该onclick方法
2、click的时候阻止a标签默认事件(这样子点击<a href="/abc">123</a>就不会跳转和刷新页面)
3、再取得跳转href(即是to),用history(前端路由两种方式之一,history & hash)跳转,此时只是链接变了,并没有刷新页面

到此这篇关于react-router中Link标签和a标签有什么区别的文章就介绍到这了,更多相关react-router Link标签和a标签内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • react 跳转后路由变了页面没刷新的解决方案

    react 跳转后路由变了页面没刷新的解决方案

    最近在学习React的过程中遇到了路由跳转后页面不刷新的问题,本文就详细的介绍一下解决方法,需要的朋友们下面随着小编来一起学习学习吧
    2021-06-06
  • react配合antd组件实现的管理系统示例代码

    react配合antd组件实现的管理系统示例代码

    这篇文章主要介绍了react配合antd组件实现的管理系统示例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-04-04
  • 解决react中useState状态异步更新的问题

    解决react中useState状态异步更新的问题

    本文主要介绍了react中useState状态异步更新的问题,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-07-07
  • React如何使用Portal实现跨层级DOM渲染

    React如何使用Portal实现跨层级DOM渲染

    Portal 就像是一个“传送门”,能让你把组件里的元素“传送到”其他 DOM 节点下面去渲染,下面小编就来和大家简单介绍一下具体的使用方法吧
    2025-04-04
  • 详解react如何实现复合组件

    详解react如何实现复合组件

    在一些react项目开发中,常常会出现一些组合的情况出现,这篇文章主要为大家介绍了复合组件的具体实现,感兴趣的小伙伴可以跟随小编一起学习一下
    2024-10-10
  • React条件渲染实例讲解使用

    React条件渲染实例讲解使用

    在React中,你可以创建不同的组件来封装各种你需要的行为。然后还可以根据应用的状态变化只渲染其中的一部分。React 中的条件渲染和JavaScript中的一致,使用JavaScript操作符if或条件运算符来创建表示当前状态的元素,然后让React根据它们来更新UI
    2022-11-11
  • react实现todolist的增删改查详解

    react实现todolist的增删改查详解

    这篇文章主要为大家介绍了react实现todolist的增删改查,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2021-12-12
  • 一文详解React渲染优化之useImmer

    一文详解React渲染优化之useImmer

    在React日常开发中,我们常常被重复渲染或无意义渲染所折磨,穷尽脑汁,做各种优化:memo、useMemo、useCallback、immutable等,本文主要讲述immutable的简约版Immer,感兴趣的同学可以一起来学习
    2023-05-05
  • React 如何使用时间戳计算得到开始和结束时间戳

    React 如何使用时间戳计算得到开始和结束时间戳

    这篇文章主要介绍了React 如何拿时间戳计算得到开始和结束时间戳,本文通过示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-09-09
  • 使用React和Redux Toolkit实现用户登录功能

    使用React和Redux Toolkit实现用户登录功能

    在React中,用户登录功能是一个常见的需求,为了实现该功能,需要对用户输入的用户名和密码进行验证,并将验证结果保存到应用程序状态中,在React中,可以使用Redux Toolkit来管理应用程序状态,从而实现用户登录功能,需要详细了解可以参考下文
    2023-05-05

最新评论