【Vue】路由组件传参(Query和Params)及路由命名name的用途(图文+代码)

一、静态传参数

  父路由组件链接

      <!-- 路由跳转链接 -->
      <router-link class="box_1" to="/Box_1/menu_1?id=666&name=我是box_1组件传过来的参数" active-class="active">
        菜单1
      </router-link>

子路由组件引用

<template>
  <div class="m_box">{{$route.query.id}}.{{$route.query.name}}</div>
</template>

二、动态变量传参数(Query方式)

1、父路由组件链接(地址式写法)

<template>
  <div class="m_box">
    <div class="top">
      <!-- 路由跳转链接 -->
      <router-link class="box_1" :to="`/Box_1/menu_1?id=${this.id}&name=${this.name}`" active-class="active">
        菜单1
      </router-link>
  </div>
</template>

<script>
export default {
  name: "Box_1",
  data(){
    return {
      id:"666",
      name:"我是Box_1组件传过来的参数"
    }
  }
};
</script>

2、父路由组件链接(对象式写法)

      <!-- 路由跳转链接 -->
      <router-link class="box_1"  active-class="active"
       :to="{
         path:'/Box_1/menu_1',
         query:{
           id:id,
           name:name
         }
       }">
        菜单1
      </router-link>

子路由组件引用

<template>
  <!-- <div class="m_box">我是Menu_1组件!</div> -->
  <div class="m_box">{{$route.query.id}}.{{$route.query.name}}</div>
</template>

三、路由命名的用法

在router/index.js中设置name

 在组件中引用,代替 path:'/Box_1/Menu_1',

四、动态变量传参数(Params方式)

Query方式,地址栏,带参数名

Params方式,地址栏中不带参数名

Params方式,地址栏中也可以隐藏参数

1、 router/index.js

如果想地址栏隐藏参数,直接把【path: 'Menu_1',】,不要加上后边的【/:id/:name】

// 引入路由
// eslint-disable-next-line no-unused-vars
import VueRouter from 'vue-router'
import Box_1 from '../pages/Box_1.vue'
import Box_2 from '../pages/Box_2.vue'
import Menu_1 from '../pages/Menu_1.vue'
import Menu_2 from '../pages/Menu_2.vue'


// 创建一个路由器

export default new VueRouter({
    routes: [

        {
            path: '/Box_1',
            component: Box_1,
            children: [
                {
                    name:'myMenu',  // 用name代替路径
                    path: 'Menu_1/:id/:name',
                    component: Menu_1
                },
                {
                    path: 'Menu_2',
                    component: Menu_2
                },

            ]
        },
        {
            path: '/Box_2',
            component: Box_2,
            children: [
                {
                    path: 'Menu_1',
                    component: Menu_1
                },
                {
                    path: 'Menu_2',
                    component: Menu_2
                },

            ]
        },
    ]


})

2、box_1.vue

<!-- 路由跳转链接 -->
      <router-link class="box_1" active-class="active"
        :to="{
          name:'myMenu',
          params:{
            id:id,
            name:name
          }
        }">
        菜单1
      </router-link>

3、Menu_1.vue

<template>
  <div class="m_box">{{$route.params.id}}.{{$route.params.name}}</div>
</template>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

敦厚的曹操

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值