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

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

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



在这里插入图片描述


一、前言


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

二、 useRouter 是什么?


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

三、useRouter 的方法与属性


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

1、方法

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

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

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

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

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

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

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

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

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

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

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

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

    clearRoutes(): void;
    

2、属性

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

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

    options: RouterOptions;
    

四、如何使用 useRouter?


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

1、基础示例:基本导航

<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 方法:

<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 等方法来实现不同类型的导航操作。通过这些方法,我们可以在应用的任何地方精确地控制路由跳转,从而提供更好的用户体验。

参考文章:


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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Commas.KM

码路共同进步,感恩一路有您

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值