首页 > 其他分享 >路由之间是怎么跳转的?有哪些方式?

路由之间是怎么跳转的?有哪些方式?

时间:2024-12-13 20:32:32浏览次数:6  
标签:about 哪些 跳转 Router push router 路由

1. React 路由跳转方式(React Router)

在 React 中,路由跳转通常使用 React Router 来管理。React Router 提供了不同的跳转方式。

  • <Link> 组件跳转 使用 <Link> 组件来进行路由跳转,它会渲染为一个 HTML <a> 标签,不会引起页面的刷新,而是通过路由机制实现视图切换。

    import { Link } from 'react-router-dom';
    
    const MyComponent = () => {
      return (
        <div>
          <Link to="/about">Go to About</Link>
        </div>
      );
    }
    

  • history.push() 跳转 使用 history.push() 来实现程序化路由跳转,通常在函数组件中结合 useHistory 钩子来使用。

    import { useHistory } from 'react-router-dom';
    
    const MyComponent = () => {
      const history = useHistory();
    
      const navigate = () => {
        history.push('/about');
      }
    
      return (
        <div>
          <button onClick={navigate}>Go to About</button>
        </div>
      );
    }
    
  • <Redirect /> 跳转 <Redirect /> 组件用来在渲染时自动进行路由跳转,常用于条件判断或权限控制等场景。

    import { Redirect } from 'react-router-dom';
    
    const MyComponent = () => {
      const shouldRedirect = true;
    
      return shouldRedirect ? <Redirect to="/about" /> : <div>Home</div>;
    }
    

2. Vue 路由跳转方式(Vue Router)

在 Vue 中,路由跳转通常使用 Vue Router。Vue Router 提供了几种跳转方式:

  • <router-link> 组件跳转 与 React 中的 <Link> 类似,Vue 使用 <router-link> 来实现声明式路由跳转。

    <template>
      <router-link to="/about">Go to About</router-link>
    </template>
    
  • this.$router.push() 跳转 使用 this.$router.push() 实现程序化路由跳转,常见于方法或事件处理函数中。

    <template>
      <button @click="goToAbout">Go to About</button>
    </template>
    
    <script>
    export default {
      methods: {
        goToAbout() {
          this.$router.push('/about');
        }
      }
    }
    </script>
    
  • this.$router.replace() 跳转push 类似,但 replace 不会留下历史记录,所以无法使用浏览器的后退按钮返回到上一个页面。

    this.$router.replace('/about');
    
  • 编程式重定向(this.$router.replace() 根据某些条件进行页面跳转。

    if (userNotLoggedIn) {
      this.$router.replace('/login');
    }
    

3. Angular 路由跳转(Angular Router)

在 Angular 中,路由跳转通常通过 Angular Router 来完成,主要有以下几种方式:

  • <routerLink> 指令跳转 与 React 和 Vue 类似,Angular 使用 <routerLink> 指令来实现声明式路由跳转。

    <a routerLink="/about">Go to About</a>
    
  • this.router.navigate() 跳转 Angular 提供了编程式路由跳转的方法 navigate(),常常在组件的代码中使用。

    import { Component } from '@angular/core';
    import { Router } from '@angular/router';
    
    @Component({
      selector: 'app-home',
      templateUrl: './home.component.html'
    })
    export class HomeComponent {
      constructor(private router: Router) {}
    
      goToAbout() {
        this.router.navigate(['/about']);
      }
    }
    
  • 路由重定向 路由重定向可以通过在路由配置中进行设置来实现。例如:

    const routes: Routes = [ { path: '', redirectTo: '/home', pathMatch: 'full' } ];

4. 原生 HTML 路由跳转

对于一些不使用框架的应用,或者需要跳转到其他页面的场景,可以使用原生 HTML 的方式进行路由跳转:

  • 使用 <a> 标签跳转 使用标准的 HTML <a> 标签来进行跳转,这种方式会触发浏览器的页面刷新。

    <a href="/about">Go to About</a>
  • window.location 跳转 使用 JavaScript 的 window.location 对象来进行页面跳转。

    window.location.href = '/about'; // 或者 window.location.replace('/about');
    window.location.href 会将新页面加入浏览器历史记录,而 window.location.replace() 不会,后者类似于 pushState。

5. 其他常见的路由跳转方式

  • history.pushState()history.replaceState()

    这些方法允许你修改浏览器的历史记录而不引起页面重载,适用于使用单页应用(SPA)框架或自己管理路由的场景。

    history.pushState({ page: 'about' }, '', '/about');
    pushState():添加历史记录
    replaceState():替换当前历史记录

总结

路由跳转的方式主要分为声明式跳转和程序化跳转:

  • 声明式跳转:通过 <Link><router-link> 或 <routerLink> 等标签实现,通常用于静态页面中的路由跳转。
  • 程序化跳转:通过 history.push()this.$router.push()router.navigate() 等方法实现,通常用于事件处理、权限判断等动态场景。

不同框架和技术栈提供了不同的路由机制,但基本原理相同,都是通过修改浏览器的 URL 地址来切换视图

标签:about,哪些,跳转,Router,push,router,路由
From: https://blog.csdn.net/a15799652947/article/details/144459258

相关文章

  • vue——路由守卫beforeEach, 说明及实例问题
    一.说明导航守卫官方文档:在路由守卫中,只有next()是放行,其他的诸如:next('/login')、next(to)或者next({...to,replace:true})都不是放行,而是:中断当前导航,执行新的导航例1:beforeEach((to,from,next)=>{next('/login')}实际执行流程:beforeEach((to,fro......
  • 远程控制、分享屏幕软件有哪些?首选ToDesk稳定又安全
    随着现如今人们常用设备的增多,查看或操作另外设备中画面信息的需求也随之加增。虽然近几年应用市场上的远程控制和屏幕分享软件已有很多,但各有利弊且也并非全部都是安全、易用的;针对选择困扰,本篇内容,小编就为大家简要讲解几款比较知名远程共享屏幕产品的特点。ToDesk远程控制To......
  • H100、L4、A6000 等 9 款 GPU 横评,告诉你哪些适合模型训练,哪些适合AI 推理
    在AI领域,有两大场景对GPU的需求最大,一个是模型训练,另一个是AI推理任务。但是很多人多可能在最开始为自己的项目做GPU选型时,都很难判断哪些GPU适合做模型训练,哪些GPU更适合去做推理任务。所以我们通过这篇文章将基于GPU指标来帮助大家对比分析NVIDIA的H100、A1......
  • 智慧工地算法视频分析服务器视频监控接入后,常见的视频干扰故障有哪些?
    在视频监控系统的安装和维护过程中,我们经常会遇到各种技术问题,这些问题可能会影响监控图像的质量和系统的稳定性。为了确保监控系统的有效性和可靠性,了解这些常见问题及其解决方法是非常重要的。本文将详细介绍一些监控系统中常见的图像干扰和画面问题,并提供相应的解决方案。通过......
  • AI智能分析视频分析网关接入室外监控摄像头,经常遇到的问题有哪些?
    在现代安全监控系统中,室外监控摄像头扮演着至关重要的角色,它们为我们提供了实时监控的能力,帮助我们保护财产和人身安全。然而,室外监控摄像头在使用过程中可能会遇到各种技术和环境相关的挑战。本文将探讨室外监控摄像头在使用过程中常见的一些问题及其解决方案,帮助大家更好地理解......
  • 直流电阻柜设备创新技术有哪些?
    直流电阻柜设备是电力系统中的重要设备,主要用于控制和调节电力系统的电压、电流和功率因数。随着科技的不断发展,直流电阻柜设备也在不断创新和改进,以满足电力系统日益严格的要求。以下是一些直流电阻柜设备的创新技术:数字化控制技术:传统的直流电阻柜设备主要依赖于模拟电路进行......
  • 网络安全行业有哪些副业
    在网络安全领域,除了全职工作外,许多XD还通过副业来增加收入、拓展视野和锻炼技能。下面,我们就来探讨一下网络安全领域中那些充满挑战与机遇的副业。1.自媒体与内容创作网络安全领域的自媒体内容创作是一个很好的副业选择。你可以通过撰写博客文章、制作视频教程、发布微......
  • C++中多态性在实际项目中的应用场景有哪些?
    一、图形绘制系统:在一个图形绘制系统中,可以定义一个抽象的图形类,然后派生出各种具体的图形类,如圆形、矩形、三角形等。通过多态性,可以使用一个统一的接口来绘制不同类型的图形,而不需要为每种图形都编写单独的绘制函数。二、游戏开发在游戏开发中,不同的游戏角色可能有不同的......
  • 【批量提取图片和PDF局部文字重命名】快速准确的获取PDF图片区域内容对PDF改名识别的
    批量获取图片区域文字内容重命名图片PDF局部文字对PDF文件改名的案例:【批量识别图片内容重命名】批量识别图片区域文字并重命名,批量的图片部分识别内容重命文件https://mp.weixin.qq.com/s/aQZZ2y5LiMlEGGcNc3ggVA?token=1019404945&lang=zh_CN发货单局部识别单号视频效果:......
  • FreeSWITCH外呼系统的常见应用场景有哪些?
    外呼系统的常见应用场景有哪些?作者:开源呼叫中心系统FreeIPCC外呼系统凭借其灵活性、可扩展性和强大的功能特性,广泛应用于多个行业和场景中。它不仅支持传统的电话营销活动,还能满足更加复杂的企业沟通需求。以下是外呼系统的几个常见应用场景:1. 电话营销与销售推广批量呼叫......