Vue中的传参

vue路由传参

一、普通方式
1、动态路由参数

//路由
    {
        path: '/pageDetail/:id',
        name: 'pageDetail',
        meta: {
            requireAuth: true, // 判断是否需要登录
        },
        component: resolve => require(['../views/page/pageDetail.vue'], resolve)
    },
    //页面使用
    <router-link to="/pageDetail/:id">详情</router-link>
    //获取参数
    this.$route.params.id

2、params传参(刷新数据丢失、使用时用name进行跳转)

    {
        path: '/pageDetail',
        name: 'pageDetail',
        meta: {
            requireAuth: true, // 判断是否需要登录
        },
        component: resolve => require(['../views/page/pageDetail.vue'], resolve)
    },
    //页面使用
    <div @click="$router.push({name: 'pageDetail',params: {id: 111})">详情</div>
    //获取参数
    this.$route.params.id

3、query传参,刷新页面数据不会丢失

    {
        path: '/pageDetail',
        name: 'pageDetail',
        meta: {
            requireAuth: true, // 判断是否需要登录
        },
        component: resolve => require(['../views/page/pageDetail.vue'], resolve)
    },
    //页面使用
    <div @click="$router.push({path: '/pageDetail',query: {id: 111})">详情</div>
    //获取参数
    this.$route.query.id

二、vue-router使用props传参
1、布尔模式

    {
        path: '/pageDetail',
        name: 'pageDetail',
        meta: {
            requireAuth: true, // 判断是否需要登录
        },
        component: resolve => require(['../views/page/pageDetail.vue'], 
       resolve),
       props: true //如果 props 被设置为 true,route.params 将会被设置为组件属性
    },
    //页面使用 跳转Detail
    <div @click="$router.push({name: 'pageDetail',params: {id: 111})">详情</div>
    //Detail页面使用props接收
    props: ['id']
    console.log(this.id) /// 打印出111

2、对象模式

    {
        path: '/pageDetail',
        name: 'pageDetail',
        meta: {
            requireAuth: true, // 判断是否需要登录
        },
        component: resolve => require(['../views/page/pageDetail.vue'], 
       resolve),
       props: { name:"test"}//如果 props 是一个对象,它会被按原样设置为组件属性。当 props 是静态的时候有用。
    },
    //页面使用 跳转Detail
    <div @click="$router.push({name: 'pageDetail',params: {id: 111})">详情</div>
    //Detail页面使用props接收
    props: ['name']
    console.log(this.name) //打印出test

3、函数模式

    {
        path: '/pageDetail',
        name: 'pageDetail',
        meta: {
            requireAuth: true, // 判断是否需要登录
        },
        component: resolve => require(['../views/page/pageDetail.vue'], 
       resolve),
       props: (route) => ({ query: route.query.id, params: route.params.name})//这样你便可以将参数转换成另一种类型,将静态值与基于路由的值结合等等
    },
    //页面使用 跳转Detail
    <div @click="$router.push({name: 'pageDetail',query: {id: 111}),params: {name:'test'}>详情</div>
    //Detail页面使用props接收
    props: ['query','params']
    console.log(this.query) //打印出111
    console.log(this.params) //打印出test

更多详情请查看vue-router官方文档

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值