vue3中使用router路由实现跳转传参

大家好,今天和大家分享一下vue3中如何进行跳转并进行传参。

前言

vue3取消了vue2部分api,所以路由跳转和传值的方式会有所不同。

我们今天主要讲router.push(location, onComplete?, onAbort?)

vue3中新增API:useRouter和useRoute

一、路由跳转

1.首先在需要跳转的页面引入API---useRouter

javascript 复制代码
import { useRouter } from 'vue-router'

2.在跳转页面定义router变量

javascript 复制代码
//先在setup中定义
 const router = useRouter()

3.用router.push跳转页面

javascript 复制代码
// 字符串
router.push('home')
// 对象
router.push({ path: 'home' })
// 命名的路由
router.push({ name: 'user', params: { userId: '123' }})
// 带查询参数,变成 /register?userId=123
router.push({ path: 'register', query: { userId: '123' }})

二、页面传参需要注意

1.如果提供了 path,params 会被忽略,但query 没有这种情况,此时需要提供路由的 name 或手写完整的带有参数的 path

javascript 复制代码
const userId = '123'
router.push({ name: 'user', params: { userId }})
router.push({ path: `/user/${userId}` })
// 这里的 params 不生效
router.push({ path: '/user', params: { userId }})

2.上述规则同样适用于 router-link 组件的 to 属性

3.如果目的地和当前路由相同,只有参数发生了改变 (比如从一个用户资料到另一个 /users/1 -> /users/2),你需要使用 beforeRouteUpdate 来响应这个变化 (比如抓取用户信息)

相关推荐
释怀不想释怀2 小时前
Ajax,vue生命周期(自动加载页面发出请求)Axios
前端·javascript·ajax
一点晖光2 小时前
ios底部按钮被挡住
前端·ios·微信小程序
VX:Fegn08952 小时前
计算机毕业设计|基于springboot + vue智慧医药系统(源码+数据库+文档)
java·数据库·vue.js·spring boot·后端·课程设计
cz追天之路8 小时前
华为机考--- 字符串最后一个单词的长度
javascript·css·华为·less
Light608 小时前
CSS逻辑革命:原生if()函数如何重塑我们的样式编写思维
前端·css·响应式设计·组件化开发·css if函数·声明式ui·现代css
蜡笔小嘟8 小时前
宝塔安装dify,更新最新版本--代码版
前端·ai编程·dify
Irene19919 小时前
Vue:useSlots 和 useAttrs 深度解析
vue.js·useslots·useattrs
ModyQyW9 小时前
HBuilderX 4.87 无法正常读取 macOS 环境配置的解决方案
前端·uni-app
bitbitDown9 小时前
我的2025年终总结
前端
五颜六色的黑9 小时前
vue3+elementPlus实现循环列表内容超出时展开收起功能
前端·javascript·vue.js