Vue Router之router.push和router.resolve页面跳转方式
作者:₍•ʚ•₎呀呀
这篇文章主要介绍了Vue Router之router.push和router.resolve页面跳转方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
params和query传参的区别
- params传参只能通过 name 引入路由,如果写成path:‘/xxx’,获取的参数是 undefined,获取方式:route.params
- query传参name和path二者都可正常获取, 获取方式route.query
- params相当于post请求,参数不会显示在地址栏; query相当于get传参,可以在地址栏看到参数
- 路由跳转时推荐使用name的方式,因为路径可能会变,但名字一般是由具体含义的,一般不会变,写起来也简单一些
强调: 使用params传参必须通过name引入,不能通过path引入
params传参
// 使用params传参,使用name
router.push({
name: 'Login',
params: {
id: '2022-10-13'
}
})
// 获取参数
let id = route.params.idquery传参
// 使用query传参,通过name和path都能获取
router.push({
path: '/Home',
query: {
name: '我是通过url传递参数的'
}
})
// 获取参数
let name = route.query.name打开方式
- router.push 只能当前窗口打开
- router.resolve 结合 window.open 可以新窗口打开
参数传递
- router.push 支持query和params
- router.resolve 只支持query,若需地址栏参数不可见,需结合localStorage/sessionStorage或第三方插件保存
示例
- router.push
// 地址栏里带参
router.push({
path: '这里是path',
query: {
a: 1,
},
});
// 地址栏里不带参
router.push({
name: '这里是name',
params: {
a: 1,
},
});- router.resolve
// 地址栏里带参
let data = router.resolve({
path: "/channel",// 或者 name: 'channel',
query: {
a: 1,
},
});
window.open(data.href, '_blank');
// 地址栏里不带参
let data = router.resolve({
name: 'channel',
});
localStorage.setItem('a', 1);
// 然后跳转页接收 localStorage.getItem('a');总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
