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

vue3路由的replace属性(四)

一、 replace 属性

  1. 作用:控制路由跳转时操作浏览器历史记录的模式。

  2. 浏览器的历史记录有两种写入方式:pushreplace

    • push是追加历史记录(默认值)。
    • replace是替换当前记录(不会留下可后退的历史记录)。
  3. 开启replace模式:在<RouterLink>上添加replace属性即可。

<RouterLink replace .......>News</RouterLink>

以下示例为 About 组件添加了replace属性:

<div class="navigate"> <RouterLink to="/home" active-class="active">首页</RouterLink> <RouterLink :to="{ name: 'News' }" active-class="active">新闻</RouterLink> <RouterLink replace :to="{ path: '/about' }" active-class="active">关于</RouterLink> </div>

效果说明:

  • 点击首页和新闻时,浏览器可以正常前进和后退(因为使用默认的push模式)。
  • 点击关于时,由于使用了replace模式,当前历史记录被替换,因此无法通过浏览器的前进/后退按钮返回到该页面。

如下图所示:

1.1. 编程式导航

在 Vue Router 中,除了使用<RouterLink>声明式导航,还可以使用useRouter提供的pushreplace方法进行编程式导航。

注意:在 Vue 3 的组合式 API 中,$route$router被替换为useRoute()useRouter()这两个 hooks。

示例:添加按钮实现编程式导航

目标效果(添加三个按钮,点击后跳转到对应详情):

完整代码示例(News.vue):

<template> <div class="news"> <!-- 导航区 --> <ul> <li v-for="role in roleList" :key="role.id"> <button @click="checkDetails(role)">查看详情</button> <RouterLink :to="{ name: 'Rolenews', params: { id: role.id, skill: role.skill } }"> {{ role.role }} </RouterLink> </li> </ul> <!-- 展示区 --> <div class="news-content"> <RouterView></RouterView> </div> </div> </template> <script setup lang="ts" name="News"> import { reactive } from 'vue' import { RouterView } from 'vue-router' import { useRouter } from 'vue-router' const router = useRouter() interface RoleImpl { id: number role: string skill: string } function checkDetails(role: RoleImpl) { // 使用 push 进行跳转(可前进后退) router.push({ name: 'Rolenews', params: { id: role.id, skill: role.skill } }) // 也可以使用 replace(不可前进后退) // router.replace({ name: 'Rolenews', params: { id: 1, skill: '后仰跳投' } }) } const roleList = reactive([ { id: 1, role: '老大', skill: '后仰跳投' }, { id: 2, role: '库里', skill: 'logo三分' }, { id: 3, role: '詹姆斯', skill: '罚球线暴扣' }, ]) </script> <style scoped> /* 样式略 */ </style>

关键点说明

  • <li>内部,可以通过v-forrole变量获取每一项的数据。
  • 使用useRouter()获取路由实例,然后调用pushreplace方法进行跳转。
  • checkDetails函数的参数限定类型(RoleImpl接口),避免使用any,提高代码健壮性。
  • pushreplace方法接收的参数与<RouterLink>to属性写法完全一致(例如对象形式{ name, params })。
  • push会添加历史记录,支持浏览器的后退/前进;replace不会添加历史记录,直接替换当前条目。

1.2. 重定向

  1. 作用:将特定的路径重新定向到另一个已有路由。常用于设置默认首页或处理 404 之前的默认跳转。
  2. 具体编码:在路由配置中添加redirect属性。

js

{ path: '/', redirect: '/about' }
  • 如果不配置重定向,当用户访问根路径/时,没有匹配的路由组件,页面可能显示空白或无法展示内容。
  • 配置重定向后,访问根路径会自动跳转到指定的路径(例如/home),URL 也会随之改变。

效果对比:

未配置重定向时,访问localhost:5173没有组件展示:

配置重定向到/home后,访问根路径自动跳转,URL 变为localhost:5173/home

补充说明

  • redirect也可以使用命名路由的写法:redirect: { name: 'Home' }
  • 重定向是客户端路由层面的跳转,不会发送 HTTP 请求,只是前端路由的替换。
http://www.zskr.cn/news/1497466.html

相关文章:

  • AI技能平台横向盘点:觅游、携程、飞猪等5家拆解
  • OpenAI秘密递交IPO申请,股市上市进程提速
  • Dify 智能视频生成工作流:从脚本到视频的全自动化实现
  • 2026-6-10分享
  • 一楼潮湿背光,窗帘选什么面料耐潮不发霉
  • 福州市2026最新黄金回收+白银回收+铂金回收店铺门店权威榜单TOP1~5家推荐地址电话 - 三大殿
  • Java全栈工程师面试实录:从基础到高阶的全面解析
  • 【AgentScope Java新手村系列】(1)框架简介与环境搭建
  • 从开发视角看安全:我的Spring Boot项目是如何一步步防御XSS、CSRF和越权的?
  • 苏州市新道动力设备科技有限公司 - 火电厂 除盐水冷却装置 最好 品牌 定制
  • 避坑指南:用Docker在Ubuntu上快速部署Mosquitto,告别环境依赖烦恼
  • 从棋盘格到人脸:用OpenCV Sobel算子实战图像边缘检测,对比dx,dy不同组合的效果差异
  • 7th grade [math] (2026.06.09)
  • 新乡朗格+积家手表专业回收,26年精选回收店铺排行榜推荐 - 莘州文化
  • 避坑指南:PixHawk飞控接Benewake TF02-i-CAN雷达时,90%的人会忽略的CAN总线设置细节
  • 铜仁卡地亚+GP芝柏表手表专业回收,26年精选回收店铺排行榜推荐 - 莘州文化
  • 别再只调API了!深入理解风格迁移:从Gram矩阵到内容/风格分离的数学原理与调参实战
  • Rimworld Mod制作避坑指南:从ThingDef命名到XML结构,新手必看的Defs文件核心要点
  • 基于深度学习YOLOv11的家具识别检测系统(YOLOv11+YOLO数据集+UI界面+登录注册界面+Python项目源码+模型)
  • 郑州卡地亚+GP芝柏表手表专业回收,26年精选回收店铺排行榜推荐 - 莘州文化
  • 数据契约驱动的机器学习Pipeline:重构数据科学家与工程师的协作范式
  • 从唐诗到商品推荐:我用Neo4j Desktop给电商数据做了个“知识图谱”实验
  • 深入S32K Bootloader的Flash操作:为什么你的CAN升级程序会写砖?避坑指南来了
  • 别再求人了!手把手教你用CMW500和QRCT搞定WiFi定频测试(高通平台保姆级教程)
  • 鸿蒙开发实战:金额大写转换工具
  • 摸鱼神器,这班现在爽了!
  • STM32F105到GD32F305的CAN驱动移植实战:我踩过的五个坑与填坑指南
  • 告别FTP客户端!用PowerShell的PSFTP模块实现自动化文件传输(含Azure部署实战)
  • 避开这5个坑,你的2D视觉机器人手眼标定精度能翻倍 | 基于棋盘格的实战经验分享
  • 模板驱动型文档自动化:结构化填充与多源数据对接实战