路由的传参方式

文章展示了在Vue.js中使用VueRouter进行路由传参的两种主要方式——query和params。query参数会显示在URL后面,适合用于可搜索和书签的场景;params参数则不会显示在URL中,适合传递识别ID等信息。示例代码详细演示了如何在组件之间通过这两种方式传递参数。
摘要由CSDN通过智能技术生成

路由传参方式两种?query和params

query传参

Profile.vue
    
<div>
    <ul>
        <li v-for="m in messageList" :key="m.id" >
        //(跳转路由并携带query传参,to的字符串写法)
            <router-link to="`/home/profile/detail?id=${m.id}&title=${m.title}`">                                   </router-link>
//(跳转路由并携带query传参,to的对象写法)
   <router-link to="{
        name:'detail', //或者path:'/home/profile/detail'
        query:{
            id:m.id,
            title:m.title
        }
    }

    "> </router-link>
        </li>
    </ul>
    <router-view></router-view>
</div>
export default {
  data(){
    return {
      messageList:[
        {
             id:'001',title:'消息1',
        },
         {
             id:'002',title:'消息2',
        },
         { 
             id:'003',title:'消息3',
        }
     
      ]
    }
  }
}
//创建并暴露一个路由器
const routes = [{
    path: '/',
    redirect: '/home'
  },
  {
    path: '/home',
    name: 'home',
    component: Home,
    children: [{
      path: 'profile',
      component: Profile,
      children: [{
        path: 'detail',
        name:'detail',
        component: Detail,
      }]
    }, {
      path: 'list',
      component: Post
    }, ]
  },
]
//路由器
const router = new VueRouter({
  routes
})
export default router
detail.vue 
<template>
  <ul>
      <li>详情{{this.$route.query.id}}</li>
      <li>主题{{this.$route.query.title}}</li>
  </ul>
</template>

<script>
export default {
    mounted(){
        console.log('====================================');
        console.log(this.$route);
        console.log('====================================');
    }
}
</script>

<style>

</style>

 params传参

Profile.vue
    
<div>
    <ul>
        <li v-for="m in messageList" :key="m.id" >
        //(跳转路由并携带params传参,to的字符串写法)
            <router-link to="`/home/profile/detail/{m.id}/${m.title}`">                                   </router-link>
//(跳转路由并携带query传参,to的对象写法)
   <router-link to="{
        name:'detail', //params只能和name搭配
            id:m.id,
            title:m.title
        }
    }

    "> </router-link>
        </li>
    </ul>
    <router-view></router-view>
</div>
export default {
  data(){
    return {
      messageList:[
        {
             id:'001',title:'消息1',
        },
         {
             id:'002',title:'消息2',
        },
         { 
             id:'003',title:'消息3',
        }
     
      ]
    }
  }
}
import Vue from 'vue'
import VueRouter from 'vue-router'
import Home from '../views/Home.vue'
import About from '../views/About.vue'
import Abstract from '../views/Abstract.vue'
import Profile from '../views/User/Profile.vue'
import Post from '../views/User/Post.vue'
import Detail from '../views/User/detail.vue'
import News from '../views/components/News.vue'
Vue.use(VueRouter)
//创建并暴露一个路由器
const routes = [{
    path: '/',
    redirect: '/home'
  },
  {
    path: '/home',
    name: 'home',
    component: Home,
    children: [{
      path: 'profile',
      component: Profile,
      children: [{
        path: 'detail/:id/:title',  //路由跳转params传参,to的字符串、对象形式
        name:'detail',
        component: Detail,
      }]
    }, {
      path: 'list',
      component: Post
    }, ]
  }
]
//路由器
const router = new VueRouter({
  routes
})
export default router
detail.vue
<template>
  <ul>
      <li>详情{{this.$route.params.id}}</li>
      <li>主题{{this.$route.params.title}}</li>
  </ul>
</template>

<script>
export default {
    mounted(){
        console.log('====================================');
        console.log(this.$route);
        console.log('====================================');
    }
}
</script>

<style>

</style>

在Vue 2中,有几种传递路由参数的方式。以下是其中一些常见的方式: 1. 路径参数(Path Parameters):通过在路由路径中添加占位符来传递参数。在定义路由时,可以使用`:`来指定参数名称,然后在实际跳转时,将对应的值填入路径中。例如: ```javascript // 路由定义 { path: '/user/:id', component: User, } // 实际跳转 router.push('/user/123'); ``` 在上述例子中,`:id`是一个占位符,代表要传递的参数名称,可以在`User`组件中通过`$route.params.id`来获取传递的值。 2. 查询参数(Query Parameters):通过在URL中添加查询参数来传递数据。可以使用`query`方法或者`router-link`组件的`to`属性来生成包含查询参数的URL。例如: ```javascript // query方法 router.push({ path: '/user', query: { id: 123 } }); // router-link组件 <router-link :to="{ path: '/user', query: { id: 123 } }">User</router-link> ``` 在上述例子中,传递的参数名称是`id`,可以在`User`组件中通过`$route.query.id`来获取传递的值。 3. 命名路由(Named Routes):给路由命名可以简化路由跳转,并且可以带有参数。首先,在定义路由时,给路由对象添加一个`name`属性。然后,在实际跳转时,使用`name`属性来指定要跳转的路由,并传递参数。例如: ```javascript // 路由定义 { path: '/user/:id', name: 'user', component: User, } // 实际跳转 router.push({ name: 'user', params: { id: 123 } }); ``` 在上述例子中,通过给路由定义一个`name`属性,可以使用`name`属性来指定要跳转的路由,并通过`params`属性传递参数。在`User`组件中,可以通过`$route.params.id`来获取传递的值。 这些是Vue 2中常用的路由传参方式,根据具体的需求,选择适合的方式来传递参数。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值