当前位置:   article > 正文

Vue Router 之 router.push 和 router.resolve 页面跳转

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传参

  1. // 使用params传参,使用name
  2. router.push({
  3. name: 'Login',
  4. params: {
  5. id: '2022-10-13'
  6. }
  7. })
  8. // 获取参数
  9. let id = route.params.id


query传参

  1. // 使用query传参,通过name和path都能获取
  2. router.push({
  3. path: '/Home',
  4. query: {
  5. name: '我是通过url传递参数的'
  6. }
  7. })
  8. // 获取参数
  9. let name = route.query.name

二、正文


打开方式

router.push 只能当前窗口打开

router.resolve 结合 window.open 可以新窗口打开

参数传递

router.push 支持query和params

router.resolve 只支持query,若需地址栏参数不可见,需结合localStorage/sessionStorage或第三方插件保存

示例

router.push

  1. // 地址栏里带参
  2. router.push({
  3. path: '这里是path',
  4. query: {
  5. a: 1,
  6. },
  7. });
  8. // 地址栏里不带参
  9. router.push({
  10. name: '这里是name',
  11. params: {
  12. a: 1,
  13. },
  14. });



router.resolve

  1. // 地址栏里带参
  2. let data = router.resolve({
  3. path: "/channel",// 或者 name: 'channel',
  4. query: {
  5. a: 1,
  6. },
  7. });
  8. window.open(data.href, '_blank');
  9. // 地址栏里不带参
  10. let data = router.resolve({
  11. name: 'channel',
  12. });
  13. localStorage.setItem('a', 1);
  14. // 然后跳转页接收 localStorage.getItem('a');

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/338352
推荐阅读
相关标签
  

闽ICP备14008679号