vue-router v4.x命名路由,编程式跳转

命名路由,编程式跳转

const routes:RouteRecordRaw[] = [
  {
    path:'/',
    name:'A',
    component: ()=> import('../A.vue')
  },
  {
    path:'/B',
    name:'B',
    component: ()=> import('../B.vue')
  },
]
  • 通过name进行跳转
<template>
  <div>
    <router-link :to="{name:'A'}">A路由</router-link>
    <router-link :to="{name:'B'}" style="margin-left:10px">B路由</router-link>
  </div>
</template>

  • 通过编程式跳转
<template>
  <div>
    <button @click="ASkip('/')">A路由跳转</button>
    <button @click="BSkip('/B')" style="margin-left:10px">B路由跳转</button>
  </div>
  <router-view></router-view>
</template>

<script setup lang="ts">

import { useRouter } from 'vue-router'
const router = useRouter()

const ASkip = (url:string)=>{
  // 字符串
  // router.push(url)
  // 对象形式, 可进行传参 path 对应的 query  name 对应的 params
  router.push({
    path:url,
    query:{
      name:'我是path跳转'
    }
  })
}

// 通过query进行传参数,相关组件接受如下
import { useRoute } from 'vue-router'

const route = useRoute()

console.log('routeA:',route.query)


// 通过name传参数,vue-router 使用的是v4.x
const BSkip = (url:string)=>{
  // 字符串
  // router.push(url)
  // 对象形式, 可进行传参 path 对应的 query  name 对应的 params
  router.push({
    name:url,
    params:{
        name:'我是name跳转'
    }
  })
}

import { useRoute } from 'vue-router'

const route = useRoute()
// 发现在B组件中获取到的router.params 值是{}对象,拿不到值,且控制台报出警告:[Vue Router warn]: Discarded invalid param(s) "username" when navigating
console.log('routeB:',route.params)


// 若是非得通过name传参,可以使用如下方法
const BSkip = (url:string)=>{
  router.push({
    name:url,
    state: {
      username:'我是name跳转',
      age:18
    }
  })
}

// B组件接收参数:通过history.state可以拿到username,age的值
console.log('routeB:',history.state)

问题:name方式传参有如下警告:[Vue Router warn]: Discarded invalid param(s) “username” when navigating,各位大佬有解决办法麻烦告知一声。

  • 5
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值