【vue3|第24期】深入了解useRouter:方法、属性与使用示例

devtools/2024/12/22 22:01:01/

日期:2024年8月20日
作者:Commas
签名:(ง •_•)ง 积跬步以致千里,积小流以成江海……
注释:如果您觉得有所帮助,帮忙点个赞,也可以关注我,我们一起成长;如果有不对的地方,还望各位大佬不吝赐教,谢谢^ - ^
1.01365 = 37.7834;0.99365 = 0.0255
1.02365 = 1377.4083;0.98365 = 0.0006

说在最前面:本文 vue3 的示例代码,在没有另外声名的情况下,均采用 <script setup> 组合式代码风格,风格统一,避免混乱,请各位新老食客放心食用哈 ^ _ ^


文章目录

  • 一、前言
  • 二、 useRouter 是什么?
  • 三、useRouter 的方法与属性
    • 1、方法
    • 2、属性
  • 四、如何使用 useRouter
    • 1、基础示例:基本导航
    • 2、实际应用:按钮导航
  • 五、结语


在这里插入图片描述


一、前言


Vue3 的世界中,Composition API 的引入为开发者带来了更加灵活和强大的组件编写方式。Vue Router,作为 Vue.js 的官方路由管理器,也紧跟步伐,提供了 useRouter 钩子,让我们可以在 setup 函数、语法糖中使用路由实例。本文将详细介绍 useRouter 的方法和属性,并通过实际示例展示如何在 Vue3 组件中使用它。

useRouter__25">二、 useRouter 是什么?


useRouterVue Router 4.x 版本中的一个 Composition API。它使得在 Vue3 组件的 setup 函数中能够访问路由实例,从而允许我们进行路由导航、获取当前路由信息等操作。

useRouter__30">三、useRouter 的方法与属性


useRouter 提供了一系列方法和属性,以下是其中一些常用的:

1、方法

  • 导航到一个新的 URL,并返回一个 Promise

    javascript">push(to: RouteLocationRaw): Promise<NavigationFailure | void | undefined>;
    
  • 导航到一个新的 URL,但不会留下历史记录,并返回一个 Promise

    javascript">replace(to: RouteLocationRaw): Promise<NavigationFailure | void | undefined>;
    
  • history 记录中前进或后退指定的步数。

    javascript">go(delta: number): void;
    
  • 导航到 history 记录的上一个页面。

    javascript">back(): ReturnType<Router['go']>;
    
  • 导航到 history 记录的下一个页面。

    javascript">forward(): ReturnType<Router['go']>;
    
  • 返回包含所有路由记录的数组。

    javascript">getRoutes(): RouteRecord[]
    
  • 解析给定的目标位置,并返回一个完成的 location 对象。

    javascript">resolve(to: RouteLocationAsString | RouteLocationAsRelative | RouteLocationAsPath, currentLocation?: RouteLocationNormalizedLoaded): RouteLocationResolved;
    
  • 动态添加路由。

    javascript">addRoute(route: RouteRecordRaw): () => void;
    
  • 动态移除路由。

    javascript">removeRoute(name: NonNullable<RouteRecordNameGeneric>): void;
    
  • 判断指定路由是否存在

    javascript">hasRoute(name: NonNullable<RouteRecordNameGeneric>): boolean;
    
  • 获取路由列表

    javascript">getRoutes(): RouteRecord[];
    
  • 删除所有路由

    javascript">clearRoutes(): void;
    

2、属性

  • 当前路由的响应式引用。

    javascript">currentRoute: Ref<RouteLocationNormalizedLoaded>;
    
  • 路由实例的配置选项。

    javascript">options: RouterOptions;
    

useRouter_111">四、如何使用 useRouter


要在组件中使用 useRouter,首先确保你已经在项目中安装并配置了 Vue Router。下面是一个简单的使用示例:

1、基础示例:基本导航

javascript"><scriot setup>
import { useRouter } from 'vue-router';const router = useRouter();// 导航到主页
function navigateToHome() {router.push('/home');
}// 替换当前页面,不留下历史记录
function replaceToProfile() {router.replace('/about');
}// 后退一步
function goBack() {router.back();
}// 前进一步
function goForward() {router.forward();
}// 获取当前路由信息
const route = router.currentRoute.value;</script>

在这个例子中,我们定义了几个方法来使用 router 实例进行页面导航。例如,navigateToHome 方法会将用户导航到主页,而 replaceToProfile 方法会将当前页面替换为用户个人资料页面,且不会在浏览器的历史记录中留下记录。goBackgoForward 方法允许用户在浏览器的历史记录中后退和前进。

2、实际应用:按钮导航

假设我们有一个按钮,用户点击它时,我们想导航到一个名为 /about 的路由。以下是 HTML 模板和相应的 setup 函数:

<template><button @click="navigateToAbout">关于</button>
</template>

在组件的 setup 函数中,我们可以这样定义 navigateToAbout 方法:

javascript"><script setup>
import { useRouter } from 'vue-router';const router = useRouter();function navigateToAbout() {router.push('/about');
}
</script>

现在,当用户点击“关于我们”按钮时,navigateToAbout 方法将被触发,并通过 Vue Router 导航到 /about 页面。

五、结语


Vue Router 中,我们通常使用 router 实例来进行编程式导航。router 实例提供了 pushreplacegobackforward 等方法来实现不同类型的导航操作。通过这些方法,我们可以在应用的任何地方精确地控制路由跳转,从而提供更好的用户体验。

参考文章:

  • 《Vue Router官方文档》
  • 《Vue 组合式 API 常见问答》

版权声明:本文为博主原创文章,如需转载,请给出:
原文链接:https://blog.csdn.net/qq_35844043/article/details/141355886


http://www.ppmy.cn/devtools/97869.html

相关文章

每日一问:Kafka消息丢失与堆积问题分析(简化版)

Kafka 消息系统问题解析 在本篇博客中&#xff0c;我们将深入探讨 Kafka 中常见的两大问题&#xff1a;消息丢失和消息堆积。首先&#xff0c;我们将简要介绍 Kafka 的基本工作原理&#xff0c;随后分别分析消息丢失和堆积的原因&#xff0c;并提供针对性的解决方案。 关于其详…

Django后端架构开发:视图与模板的正确使用

&#x1f31f; Django后端架构开发&#xff1a;视图与模板的正确使用 &#x1f539; view、render、redirect 在Django中&#xff0c;视图&#xff08;view&#xff09;是处理用户请求的核心&#xff0c;它接收一个HttpRequest对象并返回一个HttpResponse对象。Django提供了两…

亿玛科技:TiDB 6.1.5 升级到 7.5.1 经验分享

作者&#xff1a; foxchan 原文来源&#xff1a; https://tidb.net/blog/6e628afd 为什么要升级&#xff1f; 本次升级7.5的目的如下&#xff1a; 1、tidb有太多的分区表需要归档整理。7.5版本这个功能GA了。 2、之前集群tikv节点的region迁移过慢&#xff0c;影响tikv节…

【数据结构】数据结构 知识总复习

文章目录 1. 复杂度计算1.1 时间复杂度1.2 空间复杂度1.3 如何计算 2. 常见线性结构2.1 顺序表 和 链表2.1.1 顺序表 (Array List)2.1.2 链表 (Linked List) 2.2 栈 和 队列2.2.1 什么是栈&#xff1f;什么是队列&#xff1f;关系是什么&#xff1f;2.2.2 如何实现&#xff1f;…

基于LSTM的交通流量预测算法及Python实现

一、算法原理 LSTM&#xff08;长短期记忆网络&#xff09;算法原理主要涉及到一种特殊的循环神经网络&#xff08;RNN&#xff09;结构&#xff0c;旨在解决传统RNN在处理长序列数据时容易出现的梯度消失或梯度爆炸问题。LSTM通过引入三个关键的门控机制&#xff08;遗忘门、…

【开端】记一次诡异的接口排查过程

一、绪论 最近碰到这么一个情况&#xff0c;接口请求超时。前提是两台服务器间的网络是畅通的&#xff0c;端口也是通&#xff0c;应用代码也是通。意思是在应用上&#xff0c;接口没有任何报错&#xff0c;能正常返回数据。客户端到服务端接口也能通&#xff0c;但是接收不到服…

拉取/启动kafka的docker镜像

拉取/启动kafka的docker镜像 1、拉取kafka镜像2、移除docker镜像(演示)3、查看镜像是否拉取成功4、通过docker启动kafka容器5、查看是否有启动的容器 1、拉取kafka镜像 因为一些原因&#xff0c;无法从dockerhub直接拉取kafka的docker镜像&#xff0c;我将原来拉到kafka3.7.0的…

初级python代码编程学习----简单的图形化闹钟小程序

我们来创建一个简单的图形化闹钟程序通常需要使用图形用户界面&#xff08;GUI&#xff09;库。以下是使用Python的Tkinter库创建一个基本闹钟程序的步骤&#xff1a; 环境准备 确保已安装Python。安装Tkinter库&#xff08;Python 3.8及以上版本自带Tkinter&#xff0c;无需…