• vue-router传参的四种方式超详细


    vue路由传参的四种方式

    一、router-link路由导航方式传参

    父组件:<router-link to="/跳转到的路径/传入的参数"></router-link>
    子组件:this.$route.params.content接受父组件传递过来的参数

    例如:
    路由配置:

    bashbash{path:'/father/son/:num',name:A,component:A}```
    
    • 1

    地址栏中的显示:

    http://localhost:8080/#/father/son/44
    
    • 1

    调用方法:

    <router-link to="/father/son/传入的参数">父亲组件<router-link>
     子组件通过  this.$route.params.num 接受参数
    
    • 1
    • 2

    二、调用$router.push实现路由传参

    父组件:通过实践触发,跳转代码

    <button @click="clickHand(123)">push传参</button>
      methods: {
        clickHand(id) {
          this.$router.push({
            path: `/d/${id}`
          })
        }
      }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    路由配置

    {path: '/d/:id', name: D, component: D}
    
    • 1

    地址栏中显示:

    http://localhost:8080/d/123
    
    • 1

    子组件接受参数方式

    mounted () {
      this.id = this.$route.params.id
    }
    
    • 1
    • 2
    • 3

    三、通过路由属性name匹配路由,再根据params传递参数

    父组件:

    <button @click="ClickByName()">params传参</button>
        ClickByName() {
          this.$router.push({
            name: 'B',
            params: {
              context: '吴又可吴又可吴又可'
            }
          })
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    路由配置:路径后不需要在加上传入的参数,但是name必须和父组件中的name一致

    {path: '/b', name: 'B', component: B}
    
    • 1

    地址栏中的显示:地址栏不会带有传入的参数,而且再次刷新页面后参数会丢失

    http://localhost:8080/#/b
    
    • 1

    子组件接收参数的方式:

    <template>
      <div id="b">
        This is page B!
        <p>传入参数:{{this.$route.params.context}}</p>
      </div>
    </template>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    四、通过query来传递参数

    父组件:

    <button @click="clickQuery()">query传参</button>
        clickQuery() {
          this.$router.push({
            path: '/c',
            query: {
              context: '吴又可吴又可'
            }
          })
        }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    路由配置:不需要做任何修改

    {path: '/c', name: 'C', component: C}
    
    • 1

    地址栏中的显示(中文转码格式):

    http://localhost:8080/#/c?sometext=%E8%BF%99%E6%98%AF%E5%B0%8F%E7%BE%8A%E5%90%8C%E5%AD%A6
    
    • 1

    子组件接受方法:

    <template>
      <div id="C">
        This is page C!
        <p>这是父组件传入的数据: {{this.$route.query.context}}</p>
      </div>
    </template>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    工作中经常用的也就是上面的几种传参方式,完结~ 欢迎点赞收藏哦

  • 相关阅读:
    YOLOv8教程系列:五、关闭数据增强
    论文答辩小技巧!
    Chocolatey,Windows 上的包管理器
    【洛谷 P8682】[蓝桥杯 2019 省 B] 等差数列 题解(数学+排序+差分)
    什么是ElasticSearch的深度分页问题?如何解决?
    基于VueCli创建自定义项目
    gitLab批量下载有权限的项目
    直播岗位认知篇
    Loguru_No.1_对于官网部分内容的理解
    SpringBatch(10):ItemWriter详解
  • 原文地址:https://blog.csdn.net/qq_42696432/article/details/125400186