Vue Router 之 router.push 和 router.resolve 页面跳转简单记录
params和query传参的区别
params传参只能通过 name 引入路由,如果写成path:‘/xxx’,获取的参数是 undefined,获取方式:this.$route.params
query传参name和path二者都可正常获取, 获取方式:this.$route.query
params相当于post请求,参数不会显示在地址栏; query相当于get传参,可以在地址栏看到参数
路由跳转时推荐使用name的方式,因为路径可能会变,但名字一般是由具体含义的,一般不会变,写起来也简单一些
强调: ⚠️:使用params传参必须通过name引入,不能通过path引入
params传参
// 使用params传参,使用name
this.$router.push({
name: 'Login',
params: {
id: '2022-10-13'
}
})
// 获取参数
this.id = this.$route.params.id
query传参
// 使用query传参,通过name和path都能获取
this.$router.push({
path: '/Home',
query: {
name: '我是通过url传递参数的'
}
})
// 获取参数
this.name = this.$route.query.name
正文
打开方式
router.push 只能当前窗口打开
router.resolve 结合 window.open 可以新窗口打开
参数传递
router.push 支持query和params
router.resolve 只支持query,若需地址栏参数不可见,需结合localStorage或第三方插件保存
示例
router.push
// 地址栏里带参
this.$router.push({
path: '这里是path',
query: {
a: 1,
},
});
// 地址栏里不带参
this.$router.push({
name: '这里是name',
params: {
a: 1,
},
});
router.resolve
// 地址栏里带参
let data = this.$router.resolve({
path: "/channel_sms",// 或者 name: 'channel_sms',
query: {
a: 1,
},
});
window.open(data.href, '_blank');
// 地址栏里不带参
let data = this.$router.resolve({
name: 'channel_sms',
});
localStorage.setItem('a', 1);
// 然后跳转页接收 localStorage.getItem('a');
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了