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

news2025/1/11 4:06:42

日期: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 是什么?


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

参考文章:

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2061290.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

安装CUDA、CUDNN、pytorch

2.1 安装CUDA 2.1.1找到CUDA的版本号 2.1.1.1 屏幕的左下角&#xff0c;找到NVIDIA控制面板的图标&#xff0c;如下图所示&#xff1a; 图2.1.1.1 NVIDIA控制面板图标 2.1.1.2 打开NVIDIA控制面板&#xff0c;找到系统信息&#xff0c;如下图所示&#xff1a; 图2.1.1.2 系…

Qt中英文支持

目的 就是想让QT编的软件支持中英文。 情况 1、首先配置项目的pro文件&#xff1a; 这样就会生成相应的翻译配置文件&#xff0c;当前是&#xff1a; translate1_cn.ts&#xff1a;中文的配置文件&#xff0c;因为一般默认就是中文&#xff0c;所以一般中文的翻译文件是不需…

GPT的token是怎么计算的

百花齐放的AI模型 自从ChatGPT横空出世 计算机进入了AI时代 国内也诞生了不少优秀的替代品 讯飞系、通义系、文心等等 国内排名最高的阿里通义 720亿参数的模型Qwen-72B 力压Llama 2等国内外开源大模型 登顶Hugging Face的开源大模型排行榜首 包括C-Eval、CMMLU、Gaok…

electron-vite封装UI级的消息提示

说明 Electron Vite Vue3 Element Plus Electron中写提示有两种方案&#xff1a; 系统级&#xff1a;electron带的dialog相关APIUI级&#xff1a;UI框架内部的提示&#xff0c;如ElMessage、ElMessageBox、ElNotification等 今天来封装一下UI级别的提示 代码 效果图 源…

tomcat利用 nginx 反向代理

利用 nginx 反向代理功能&#xff0c;实现图中的代理功能&#xff0c;将用户请求全部转发至指定的同一个 tomcat 主机 利用 nginx 指令 proxy_pass 可以向后端服务器转发请求报文 , 并且在转发时会保留客户端的请求报文中的 host首部 实现 tomcat 中的负载均衡 动态服务器的…

day6JS-DOM(文档对象模型)

DOM树 DOM 操作 1. 获取元素 1.1 根据id名获取元素 document.getElementById("id名"); 案例&#xff1a; <body><div id"box">div盒子</div><h1>一级标题</h1><script>console.log(document.getElementById(&quo…

软件测试费用怎么算?湖南软件测评公司简析

随着信息技术的迅猛发展&#xff0c;软件在各行各业中的应用日益广泛&#xff0c;软件测试的重要性愈加凸显。特别是对于各种规模的企业&#xff0c;确保软件质量和安全性不仅是提升竞争力的关键因素&#xff0c;更是维护用户信赖的基础。 软件测试作为软件开发过程中的关键环…

IO进程线程8月21日

1&#xff0c;思维导图 2&#xff0c;登录 #ifndef __LOG_H__ #define __LOG_H__ #include<myhead.h> typedef struct {char name[20];char pwd[20]; }str;int regist();int login(); #endif#include"log.h" int login() {char a[20]"\n";str p,s;…

IPC进程间通信方式及网络通信

一、IPC进程间通信方式 1.共享内存&#xff08;最高效的进程间通信方式&#xff09; 其允许两个或多个进程共享一个给定的存储区&#xff0c;这一段存储区可以被两个或以上的进程映射至自己的地址空间中&#xff0c;一个进程写入共享内存的信息&#xff0c;可以被其他使用这个…

SQL Server数据库查询常用语句汇总

这里&#xff0c;汇总了在使用SQL Server数据库的过程中经常会写的查询语句。 情形1 根据时间查询最新一条数据 &#xff08;dtime类型为datetime&#xff09; select top 1 名称 as name,列名1 as parname1,列名2 as parname2,dtime,col1,col2 from demo order by dtime …

算法基础及例题

1、双指针 维护区间信息、子序列匹配、利用序列有序性、单项链表找环双指针 - OI Wiki (oi-wiki.org) 盛最多水的容器https://leetcode.cn/problems/container-with-most-water/ public class Solution {public int maxArea(int[] height) {int l 0, r height.length - 1;int…

docker 导出导入镜像

这两天我在自己的虚拟机器上想docker pull tomcat 但是一直失败&#xff0c;那么我想到了一个思路就是在阿里云上的服务器上把镜像打包&#xff0c;然后倒导入的本地的虚拟机上。 查看当前的镜像&#xff1a; 我们现在想要打包哪个镜像呢&#xff0c;比如打包&#xff1a;tom…

线段树-点修区查

翻博客的时候突然发现线段树好像一个没有&#xff0c;我就准备把线段树给讲一下 分三个章节 点修区查 区修区查 区修区查&#xff08;带乘法&#xff09; 今天这一章比较简单&#xff0c;最多就区查稍微要动一点脑子 题目简介 输入n和m&#xff0c;n代表数的个数&#x…

python多进程multiprocessing(共享字典)

一&#xff0c;线程与进程的区别 纲领&#xff1a;进程是资源分配的最小单位&#xff0c;线程是CPU调度的最小单位 听老师傅说&#xff0c;在python上线程作用不大&#xff0c;最好还是使用多进程。 二&#xff0c;简单使用multiprocessing 检测一下电脑性能如何&#xff1a…

Mac电脑遇到DNS解析失败,ip可以访问,域名无法访问

当Mac电脑遇到DNS解析失败的问题时&#xff0c;可以尝试以下几个解决方法‌&#xff1a; 1.检查网络连接‌&#xff1a;确保Mac已连接到可用的网络&#xff0c;并且网络连接正常。可以尝试重新连接Wi-Fi或使用有线连接来排除网络问题。 2.清除DNS缓存‌&#xff1a;打开终端应…

技术革新,智能恢复:2024年AI驱动的数据恢复软件

数据的脆弱性不容忽视&#xff0c;误删、格式化、硬盘损坏等意外情况时有发生&#xff0c;让我们面临数据丢失的风险。幸运的是现在有不少数据恢复精灵应运而生。今天&#xff0c;就让我们一起探索2024年大家都在用的数据恢复精灵工具。 1.福昕数据恢复 链接直达&#xff1a;…

项目控件组(基于项)Item-Based-Qt-思维导图-学习笔记

项目控件组&#xff08;基于项&#xff09;Item-Based 控件组 &#xff08;1&#xff09;List Widget:清单控件 QListWidget 控件简介 继承关系&#xff1a;继承自 QListView 功能&#xff1a;提供一个基于项的列表小部件&#xff0c;允许添加和删除项目&#xff0c;使用内部…

springboot的启动流程原理

目录 一:入口简介: 二。创建SpringApplication对象 1.推倒出当前项目的启动类型 2.设置Initializer初始化器 3.初始化Listerner监听器 4.反推出main方法所在的class对象。 三.运行SpringApplication#run(java.lang.String...)方法 1):获取运行监听器: 2)发布启动过程中…

IPC进程通信以及网络通信

一、IPC 进程间通信方式 共享内存 //最高效的进程间通信方式 不需要把用户的东西再复制到内核 他们与内核进行绑定 共享内存&#xff1a; 1、是一块&#xff0c;内核预留的空间 2、最高效的通信方式 //避免了用户空间到内核空间的数据拷贝 IPC通信方式 ---操作流程类似的…

“决胜面试:高频题目与算法策略一览”

干货分享&#xff0c;感谢您的阅读&#xff01; &#xff08;暂存篇---后续会删除&#xff0c;完整版和持续更新见高频面试题基本总结回顾&#xff08;含笔试高频算法整理&#xff09;&#xff09; 备注&#xff1a;引用请标注出处&#xff0c;同时存在的问题请在相关博客留言…