VUE3中使用vue-router,页面跳转时路由携带参数的四种方式!!!

2,932 阅读1分钟

ps:本人菜鸟一枚,因为记性不好又丢三落四,经常找不到自己做的笔记放哪了,所以打算存在掘金,第一次写文章,技术也不咋地,写的不对的地方请各位兄弟姐妹们批评指正,爱你们!!!

一.方式一:path携带参数

路由定义:

{
  path: "/product-list/:id",
  component: ProductList,
  name:"product-list"
}

代码实现

import { useRouter } from 'vue-router';
export default {
  name: "home",
  setup() {
    const router=useRouter();
    const toGoodDetail=({goodsId})=>{
      router.push({path: `/product/${goodsId}`})
    }
    return {};
  },
};

参数在地址栏中显示如下:(其中10925时页面跳转时路由携带的id参数)

http://localhost:8080/#/product/10925

获取参数的方式:

const route=useRoute();
console.log(route.params)

二. 方式二:通过query携带

路由定义:

{
  path: "/product-list",
  component: ProductList,
  name:"product-list"
}

代码实现

import { useRouter } from 'vue-router';
export default {
  name: "home",
  setup() {
    const router=useRouter();
    const onJumpDetail=(id)=>{
      router.push({
        path:"/product-list",
        query:{
          categoryId:id
        }
      })
    }
    return {};
  },
};

参数在地址栏中显示如下:(query携带的参数可以在地址栏中显示,并用?和&拼接在路径后面

http://localhost:8080/#/product-list?categoryId=17

获取参数的方式:

const route=useRoute();
console.log(route.query)

三. 方式三:通过params携带

路由定义:

{
  path: "/product-list",
  component: ProductList,
  name:"product-list"
}

代码实现

import { useRouter } from 'vue-router';
export default {
  name: "home",
  setup() {
    const router=useRouter();
    const onJumpDetail=(id)=>{
      router.push({
        path:"/product-list",
        params:{
          categoryId:id
        }
      })
    }
    return {};
  },
};

参数在地址栏不可见

http://localhost:8080/#/product-list

获取参数的方式:

const route=useRoute();
console.log(route.params)

四.通过router-link

<router-link :to="{name:'home', params: {id:1}}">  
 
// params传参数 (类似post)
// 路由配置 path: "/home/:id" 或者 path: "/home:id" 
// 不配置path ,第一次可请求,刷新页面id会消失,相当于params传参
// 配置path,刷新页面id会保留,相当于path携带参数

<router-link :to="{name:'home', query: {id:1}}"> 
 
// query传参数 (类似get,url后面会显示参数)
// 路由可不配置