vue路由之间传参的多种方式

路由组件传参

方式1:使用 $router.params

// 在路由中定义参数
const router = new VueRouter({
  routes: [
    { path: '/user/:id',  name: 'user', component: User }
  ]
})

// 页面a跳转的时候传参
<router-link to="{ path:'/user/123'}">
或者
<router-link to="{ name: 'user', params: { id: 123 }}">User</router-link>
或者
this.$router.push({path: '/user/123'})
或者
this.$router.push({ name: 'user', params: { id: 123 }})




// 在 user 页面中使用参数
<div>User {{ $route.params.id }}</div>
或者
this.$route.params.id

方式2: 使用props

文档: https://router.vuejs.org/zh/guide/essentials/passing-props.html

在组件中使用 $route 会使之与其对应路由形成高度耦合,从而使组件只能在某些特定的 URL 上使用,限制了其灵活性

使用 props 将组件和路由解耦:

// 定义路由 props
const router = new VueRouter({
  routes: [
    { path: '/user/:id', component: User, props: true },

    // 对于包含命名视图的路由,你必须分别为每个命名视图添加 `props` 选项:
    {
      path: '/user/:id',
      components: { default: User, sidebar: Sidebar },
      props: { default: true, sidebar: false }
    }
  ]
})

// 同方法1,在a页面跳转的时候传参
<router-link to="{ path:'/user/123'}">


// 在路由user组件中使用props接受参数
const User = {
  props: ['id'],
  template: '<div>User {{ id }}</div>'
}

这样你便可以在任何地方使用该组件,可以路由使用,也可以组件嵌套的时候使用,使得该组件更易于重用和测试。

方式3: 通过 vuex

虽然不太推荐,但是也可以通过vuex实现,有点杀鸡用牛刀

// 定义store
import Vuex from 'vuex'
import Vue  from 'vuex'
Vue.use(Vuex)
export default new Vuex.Store({
    state:{
             id: ''
      },
      mutations:{
           setId(state ,  id) {
                   state.id = id            
             }
        }
})

// 在a页面设置
 this.$store.commit( 'setId' ,(123) )

// 在b页面取
this.$store.state.id 

方式4:使用本地存储,localstorage或者Session Storage

原理很简单,a页面存,b页面取,不推荐

推荐方式2,解耦更通用

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,194评论 6 490
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,058评论 2 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 156,780评论 0 346
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,388评论 1 283
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,430评论 5 384
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,764评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,907评论 3 406
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,679评论 0 266
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,122评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,459评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,605评论 1 340
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,270评论 4 329
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,867评论 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,734评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,961评论 1 265
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,297评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,472评论 2 348

推荐阅读更多精彩内容

  • 前言 您将在本文当中了解到,往网页中添加数据,从传统的dom操作过渡到数据层操作,实现同一个目标,两种不同的方式....
    itclanCoder阅读 25,761评论 1 12
  • 内容 UI组件 开发框架 实用库 服务端 辅助工具 应用实例 Demo示例 UI组件 element ★13489...
    秋玄语道阅读 13,700评论 3 116
  • 曾悲失路在河洲,喜逢渔家一叶舟。 香魂飘渺人去矣,凭谁销我万古愁? 久与卿卿两分离,蜂狂蝶舞倍相思。 心如枯草期甘...
    昨夜一一我与树交谈阅读 110评论 0 0
  • 每次我去学校门口接孩子的时候总要早到几分钟。一是需要找停车位,另一方面是因为我很喜欢观察宝妈百态。 我观察的心得是...
    美女多多阅读 791评论 14 15
  • 捉虫记 你小时候捉过虫吗?男孩子一定捉过。但是女孩子捉过虫子的不一定多吧。都说女孩子胆子小,怕虫子,在我眼里虫子没...
    千原阅读 814评论 0 0