• /data/:id这个路由匹配/data/1,/data/2这里的 id 叫 params

  • /data?id=1 /data?id=2 这里的 id 叫 query

  • 当你使用params方法传参的时候,要在路由后面加参数名,并且传参的时候,参数名要跟路由后面设置的参数名对应。

  • 使用query方法,就没有这种限制,直接在跳转里面用就可以.

 
const router = createRouter({
    routes:[
      {
         name:"Home",
         path:"/home",
         component:()=>import("../views/home.vue"),
      },
      {
         name:"News",
         path:"/news/:name/:age",
         component:()=>import("../views/news.vue"),
      },
      {
         name:"NewsTest",
         // 传递 params 参数必须在此声明/:name/:age?
         // :age? 问号代表此参数可传可不传
         path:"/newsText/:name/:age?",
         component:()=>import("../views/news.vue"),
      }
   ]
}) 

路由-query参数

  • 路由的查询参数是一种在URL中传递数据的机制。它们可以用于在不同的路由之间传递参数

  • 注意这里是用name配置项的 ,而不是用path配置项。
router.push({
    name:'xiangqing',
    params:{
        id:news.id,
        title:news.title,
        content:news.content
    } 
})

路由的props:将query或params参数以props的形式传递给组件

  • 如:<News :name="name" :age="age“>

  • 接收参数:defineProps(["name","age"])

{
         name:"News",
         path:"/news/:name/:age",
         component:()=>import("../views/news.vue"),

         // 简单写法:将params参数以propa形式传递给组件 <News :name="name" :age="age">
         // props:true,


         // 函数写法:可指定将query参数以propa形式传递给组件
         props(route) {
            return route.query
         },
         // 对象写法:将数据写死
         // props:{
         //    name:"张三",
         //    age:18
         // }
},