Vue路由传参的几种方式

Vue路由传参的几种方式前言 顾名思义 vue 路由传参是指嵌套路由时父路由向子路由传递参数 否则操作无效 传参方式可以划分为 params 传参和 query 传参 params 传参又可以分为 url 中显示参数和不显示参数两种方式 具体区分和使用后续分析 参考官网 https router vuejs org zh guide essentials navigation htmlparams 传参 url 中显示参数

前言:顾名思义,vue路由传参是指嵌套路由时父路由向子路由传递参数,否则操作无效。传参方式可以划分为params传参和query传参,params传参又可以分为url中显示参数和不显示参数两种方式。具体区分和使用后续分析。

参考官网:https://router.vuejs.org/zh/guide/essentials/navigation.html

params传参(url中显示参数)

  • 文件结构

Vue路由传参的几种方式

  • 定义路由:在定义path路由路径时定义参数名和格式,如  path: “/one/login/:num” ,router>index.js文件如下
/* eslint-disable*/ //第一步:引用vue和vue-router ,Vue.use(VueRouter) import Vue from 'vue' import Router from 'vue-router' Vue.use(Router) //第二步:引用定义好的路由组件 import ChildOne from '../components/childOne' import ChildTwo from '../components/childTwo' import Log from '../components/log.vue' import Reg from '../components/reg.vue' //第三步:定义路由(路由对象包含路由名、路径、组件、参数、子路由等),每一个路由映射到一个组件 //第四步:通过new Router来创建router实例 export default new Router({ mode: 'history', routes: [ { path: '/one', name: 'ChildOne', component: ChildOne, children:[ { path:'/one/log/:num', component:Log, }, { path:'/one/reg/:num', component:Reg, }, ], }, { path: '/two', name: 'ChildTwo', component: ChildTwo } ] })
  • 在父路由组件上使用router-link进行路由导航,传参用

    的形式向子路由组件传递参数。使用router-view进行子路由页面内容渲染,父路由组件childOne.vue 如下:
 
  
  • 子路由通过 this.$route.params.num 的形式来获取父路由向子路由传递过来的参数,子路由组件login.vue如下:
 
  

效果:

Vue路由传参的几种方式

注意:如上所述路由定义的path: “/one/login/:num”路径和to=”/one/login/001″必须书写正确,否则不断点击切换路由,会因为不断将传递的值显示添加到url中导致路由出错,如下

Vue路由传参的几种方式

传递的值存在url中存在安全风险,为防止用户修改,另一种方式不在url中显示传递的值

 

params传参(url中不显示参数)

  • 定义路由时添加name属性给映射的路径取一个别名,router>index.js文件修改router如下:
export default new Router({ mode: 'history', routes: [ { path: '/one', name: 'ChildOne', component: ChildOne, children:[ { path:'/one/log/', name:'Log', component:Log, }, { path:'/one/reg/', name:'Reg', component:Reg, }, ], }, { path: '/two', name: 'ChildTwo', component: ChildTwo } ] })
  • 在父路由组件上使用router-link进行路由导航,使用   
    • 子路由组件页面获取父路由传参方式不变,reg.vue 文件如下:
     
          

     

    注意:上述这种利用params不显示url传参的方式会导致在刷新页面的时候,传递的值会丢失;

     

     

    使用Query实现路由传参

    • 定义路由 router>index.js文件如下:
    export default new Router({ mode: 'history', routes: [ { path: '/one', name: 'ChildOne', component: ChildOne, children:[ { path:'/one/log/', component:Log, }, { path:'/one/reg/', component:Reg, }, ], }, { path: '/two', name: 'ChildTwo', component: ChildTwo } ] })
    • 修改路由导航


      childOne.vue 文件修改如下:
     
          
    • 子路由组件通过 this.$route.query.num 来显示传递过来的参数,reg.vue 文件如下:
     
           

     

     

    PS: 在第一步的定义路由中我们都使用了mode:history 作用就是去除路由跳转时路由路径前的 “#”

    常用的mode模式有两种:

    默认为hash模式,最明显的标志是,URL上有#号 localhost:8080/#/,路由会监听#后面的信息变化进行路由匹配

    另一种为history模式,不会有#出现,很大程度上对URL进行了美化。需要注意history模式在打包后的路由跳转需要服务器配合

    默认不使用mode:history 如下

    Vue路由传参的几种方式

    这是父路由childOne对应的组件页面

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/204208.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月19日 下午8:45
下一篇 2026年3月19日 下午8:45


相关推荐

  • 如何安装dosbox(pycharm详细安装教程)

    创作日志:去年学了计组与汇编,用的是masm集成版,今年做汇编课设的时候,发现那个masm集成版不支持打开文件的操作,然后我就重拾DOSBox,发现自己不会用==,忘得干干净净,而且网上都是啥乱七八糟的呀,没有一个完整的教程,刚开始我都不知道还需要MASM.EXE和LINK.EXE的文件,有的又说要放到根目录下面啥子的,但是能不能讲清楚一点啊!于是就去问了俺的盆友,几句话解决…一、DOSBox先装好,执行文件下载好1、在某个盘里(据说千万别放C盘里,俺也不知道为啥),创建个

    2022年4月18日
    47
  • 电脑广告多?Windows 自带恶意软件删除工具还不会使用?有必要安装杀毒软件吗?

    电脑广告多?Windows 自带恶意软件删除工具还不会使用?有必要安装杀毒软件吗?可能有些小伙伴发现,哎?为什么我的电脑弹窗广告这么多?难不成小视频看多了?电脑中毒了?Windows系统自带的恶意软件删除工具你还不会使用?今天我们一方面带领大家学会使用这个系统自带的工具,另一方面,谈一谈作为一个程序员对于恶意软件和杀毒软件的一些看法,希望能帮助大家纠正一些误区。

    2022年6月24日
    36
  • SQL server 2005 安装教程

    SQL server 2005 安装教程http www cnblogs com icewee articles 2019783 html

    2026年3月19日
    2
  • Spark pyspark rdd连接函数之join、leftOuterJoin、rightOuterJoin和fullOuterJoin介绍

    Spark pyspark rdd连接函数之join、leftOuterJoin、rightOuterJoin和fullOuterJoin介绍Sparkpysparkrdd连接函数之join、leftOuterJoin、rightOuterJoin和fullOuterJoin介绍union用于组合两个rdd的元素,join用于内连接,而后三个函数(leftOuterJoin,rightOuterJoin,fullOuterJoin)用于类似于SQL的左、右、全连接。针对key-value形式的RDD。例子:1)数据初始化>&g…

    2025年7月11日
    7
  • 线程、多线程与线程池面试题

    线程、多线程与线程池面试题●概念线程:进程中负责程序执行的执行单元。一个进程中至少有一个线程。多线程:解决多任务同时执行的需求,合理使用CPU资源。多线程的运行是根据CPU切换完成,如何切换由CPU决定,因此多线程运行具有不确定性。线程池:基本思想还是一种对象池的思想,开辟一块内存空间,里面存放了众多(未死亡)的线程,池中线程执行调度由池管理器来处理。当有线程任务时,从池中取一个,执行完成后线程对…

    2022年5月7日
    60
  • TC_P_Windows 安裝Eclipse

    TC_P_Windows 安裝Eclipse

    2021年8月6日
    57

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号