vue router 路由传参

本文详细介绍了在Vue.js中使用三种不同的方式来进行路由传参:params、props和meta。通过实例展示了如何在路由配置中设置参数,在组件中接收并展示这些参数,以及不同传参方式的特点和应用场景。
摘要由CSDN通过智能技术生成

第一种 params 

{
      path: '/son1',
      name:"son1",
      component: son1,
}
为路由命名 name:"son1",

在路由跳转时,指定命名路由,传参

1
 <router-link  :to="{name:'son1',params:{id:2,name:'winter',age:18}}" tag="li">首页</router-link>

或2

this.$router.push({
   name:"son1",
    params:{
       id:2,
       name:'winter',
       age:18
      }
});

组件页面 接收展示

<p>{{"我是params传来的id"+" "+$route.params.id}}</p>
<p>{{"我是params传来的name"+" "+$route.params.name}}</p>
<p>{{"我是params传来的age"+" "+$route.params.age}}</p>

query 传参与params 类似,

1 query要用path来引入,params要用name来引入,接收参数类似,分别是this.$route.query.namethis.$route.params.name

query在浏览器地址栏中显示参数,params则不显示

3    通过路由params传值,刷新页面数据消失会报错

 

第二种  props

配置路由

props: {
          id: 1234,
          userName: "Winter"
},

页面接收

export default {
        name: "son1",
        props: ['id', 'userName']
    }

页面展示

<h5>{{"我是props传来的id"+" "+id}}</h5>
<h5>{{"我是props传来的userName"+" "+userName}}</h5>

第三种 meta

路由配置

meta: {
         title: "首页",
         show: true
},

页面接收展示

<h3 v-show="this.$route.meta.show">{{this.$route.meta.title}}</h3>

页面效果:

router.js 所有代码

import Vue from 'vue'
import Router from 'vue-router'
import index from '@/components/index'
import son1 from '@/components/son1'
import son2 from '@/components/son2'

Vue.use(Router)

const router =new Router({
    routes: [
        {
            path: '/',
            component: index,
            redirect:'/son1',
            children:[
                {
                    path: '/son1',
                    name:"son1",
                    component: son1,
                    meta: {
                        title: "首页",
                        show: true
                    },
                    props: {
                        id: 1234,
                        userName: "Winter"
                    },
                    },
                {
                    path: '/son2',
                    name:"son2",
                    component: son2
                },
            ]
        },
    ]
});
export default router;

index.vue 所有代码

<template>
    <div>
        <ul id="nav">
            <router-link  :to="{name:'son1',params:{id:2,name:'winter',age:18}}" tag="li">首页</router-link>
            <router-link to="/son2" tag="li">新闻</router-link>
            <li>娱乐</li>
            <li>军事</li>
            <li>文化</li>
            <li>社会</li>
            <li>历史</li>
        </ul>

        <div id="routerview">
            <router-view></router-view>
        </div>

    </div>
</template>

<script>
    export default {
        name: "index",
        data(){
            return{

            }
        }
    }
</script>

<style scoped>
li{
    list-style: none;
    width: 150px;
    height: 50px;
    text-align: center;
    background: midnightblue;
    color: honeydew;
    line-height: 50px;
    cursor: pointer;
}
#nav{
    float: left;
}
#routerview{
    width:800px;
    height: 400px;
    border: 3px solid #ccc;
    float: left;
    margin-left: 50px;
    padding-top: 200px;
}
</style>

son1.vue 所有代码

<template>
    <div>
        我是子页面  首页
        <p>{{"我是params传来的id"+" "+$route.params.id}}</p>
        <p>{{"我是params传来的name"+" "+$route.params.name}}</p>
        <p>{{"我是params传来的age"+" "+$route.params.age}}</p>
        <h5>{{"我是props传来的id"+" "+id}}</h5>
        <h5>{{"我是props传来的userName"+" "+userName}}</h5>
        <h3 v-show="this.$route.meta.show">{{this.$route.meta.title}}</h3>
    </div>
</template>

<script>
    export default {
        name: "son1",
        props: ['id', 'userName']
    }
</script>

<style scoped>

</style>

son2.vue 所有代码

<template>
    <div>
        我是子页面 新闻
    </div>
</template>

<script>
    export default {
        name: "son2"
    }
</script>

<style scoped>

</style>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值