当前位置: 首页 > news >正文

【vue3|第21期】Vue3中Vue Router的push和replace方法详解

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

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


文章目录

  • 一、前言
  • 二、基本概念
    • 1、push 方法
    • 2、replace 方法
  • 三、区别与联系
    • 1、联系
    • 2、区别
  • 四、完整示例
    • 1、设置路由
    • 2、使用 push 方法
    • 3、使用 replace 方法
  • 五、结语


在这里插入图片描述


一、前言


Vue.js 的世界里,Vue Router 扮演着至关重要的角色,特别是在单页面应用(SPA)的开发中。Vue Router 不仅负责页面之间的跳转,还管理着页面的生命周期和状态。在 Vue3 中,Vue Router 提供了多种导航方式,其中最基本也最重要的是 pushreplace 方法。这两种方法虽然目的相同,即进行页面跳转,但它们对浏览器历史栈的处理却大相径庭。

二、基本概念


1、push 方法

push 方法,从字面上理解,就是“推”一个新的记录到历史栈。在 Vue Router 中,当你使用router.push() 进行页面跳转时,这个新页面的 URL 会被添加到浏览器的历史记录中。这意味着用户可以点击浏览器的后退按钮,回到之前的页面。

形式语法示例
声明式<RouterLink :to="xxx"><RouterLink to="/home">首页</RouterLink>
编程式router.push(xxx)router.push({ name: "home" });

2、replace 方法

push 不同,replace 方法虽然也会进行页面跳转,但是不会向历史记录中添加新记录,而是替换当前的记录。在使用 router.replace() 进行导航时,新的 URL 会替代当前页面的URL 记录。这意味着用户无法通过后退按钮回到之前的页面。

形式语法示例
声明式<RouterLink :to="xxx" replace><RouterLink to="/home" replace>首页</RouterLink>
编程式router.replace(xxx)router.replace({ name: "home" });

三、区别与联系


1、联系

  • 两者都是 Vue Router 提供的编程式导航方法,可以在 JavaScript 代码中直接调用。
  • 两者都可以用于改变当前路由,并导航到新的路由地址。

2、区别

内容pushreplace
添加历史记录
后退按钮行为可以回到上一页不能回到上一页
适用场景常规页面跳转无后退需求的跳转

四、完整示例


下面,我们将通过一些简单的示例来展示 pushreplace 方法在实际应用中的使用。

1、设置路由

首先,我们需要定义一些路由。假设我们有以下两个组件:Home.vueAbout.vue

  • src/router/index.js
import { createRouter, createWebHistory } from 'vue-router';
import Home from './components/Home.vue';
import About from './components/About.vue';
const routes = [{ path: '/', component: Home },{ path: '/about', component: About }
];
const router = createRouter({history: createWebHistory(import.meta.env.BASE_URL),routes,
});export default router;
  • src/main.js
import { createApp } from 'vue'
import App from './App.vue'// import router from '@/router/index'
import router from '@/router'const app = createApp(App)
app.use(router)
app.mount('#app')

2、使用 push 方法

在组件中,我们可以通过 this.$router.push 来导航到不同的路由。

<template><button @click="goToHome">首页</button>
</template><script setup lang="ts">
import { useRouter } from 'vue-router';
const router = useRouter();function goToHome() {router.push({ path: '/' });// 也可以名字跳转// router.push({ name: 'Home' });
}
</script>

在上面的例子中,点击按钮会导航到主页,并在历史记录中添加一条新记录。

3、使用 replace 方法

同样地,我们可以使用 router.replace 来替换当前的历史记录。

<template><button @click="goToAbout">关于(Replace)</button>
</template><script setup lang="ts">
import { useRouter } from 'vue-router';
const router = useRouter();function goToAbout() {router.replace({ path: '/about' });// 也可以名字跳转// router.replace({ name: 'About' });
}
}
</script>

在这个例子中,点击按钮会导航到关于页,但不会在历史记录中添加新记录。如果用户尝试点击后退按钮,他们将不会返回到前一个页面。

五、结语


通过上述讲解,我们可以看到 pushreplace 方法在 Vue Router 中的不同用途。push 方法适用于大多数导航情况,而 replace 方法则适用于那些不需要用户返回的情况,如登录后的重定向。了解这两个方法的使用场景,可以帮助我们更好地控制应用的路由行为。


参考文章:s

  • 《Vue Router》

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

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 服装行业QMS中的来料检验:常见问题解析与解决策略
  • 贪心算法总结(3)
  • 设计模式的概念及必要性
  • Synchronized 的底层原理——Java全栈知识(40)
  • Flink SQL 基础操作
  • 注解Spring @AliasFor使用笔记
  • 知识点——样本间独立性,传统表征学习,显式物理连接,隐含交互,噪声,类相关类无关
  • 从零开始的CPP(37)跳跃游戏,动态规划,贪心算法
  • 纷享销客CRM AI产品架构概览、产品特色
  • Github 2024-08-09 开源项目日报 Top10
  • git的一些操作指令
  • 工作随记:oracle中偶发遇到存储过程编辑,删除等卡死问题
  • 下一代 AI 搜索引擎 MindSearch:多智能体 + 系统2,模拟人类认知过程的 AI 搜索引擎
  • 在Ubuntu 18.04上安装和配置pgAdmin 4服务器模式的方法
  • Docker最佳实践(六):安装Nacos
  • 【干货分享】SpringCloud微服务架构分布式组件如何共享session对象
  • 【许晓笛】 EOS 智能合约案例解析(3)
  • angular组件开发
  • Asm.js的简单介绍
  • iBatis和MyBatis在使用ResultMap对应关系时的区别
  • Javascript基础之Array数组API
  • Js基础知识(四) - js运行原理与机制
  • Netty+SpringBoot+FastDFS+Html5实现聊天App(六)
  • Python爬虫--- 1.3 BS4库的解析器
  • Redis中的lru算法实现
  • Yii源码解读-服务定位器(Service Locator)
  • 安卓应用性能调试和优化经验分享
  • 百度地图API标注+时间轴组件
  • 如何使用 JavaScript 解析 URL
  • 一个普通的 5 年iOS开发者的自我总结,以及5年开发经历和感想!
  • Java总结 - String - 这篇请使劲喷我
  • 京东物流联手山西图灵打造智能供应链,让阅读更有趣 ...
  • "无招胜有招"nbsp;史上最全的互…
  • # 详解 JS 中的事件循环、宏/微任务、Primise对象、定时器函数,以及其在工作中的应用和注意事项
  • #define与typedef区别
  • (4)通过调用hadoop的java api实现本地文件上传到hadoop文件系统上
  • (k8s)Kubernetes 从0到1容器编排之旅
  • (第61天)多租户架构(CDB/PDB)
  • (独孤九剑)--文件系统
  • (五)IO流之ByteArrayInput/OutputStream
  • (转)四层和七层负载均衡的区别
  • (转)我也是一只IT小小鸟
  • . Flume面试题
  • ./mysql.server: 没有那个文件或目录_Linux下安装MySQL出现“ls: /var/lib/mysql/*.pid: 没有那个文件或目录”...
  • .gitattributes 文件
  • .net 7和core版 SignalR
  • .Net Core中Quartz的使用方法
  • .Net实现SCrypt Hash加密
  • .NET与java的MVC模式(2):struts2核心工作流程与原理
  • .NET之C#编程:懒汉模式的终结,单例模式的正确打开方式
  • ?.的用法
  • []FET-430SIM508 研究日志 11.3.31
  • [20150321]索引空块的问题.txt
  • [20160902]rm -rf的惨案.txt
  • [20170728]oracle保留字.txt