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.id
query传参
// 使用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');
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。