Vue.js 中的参数传递

最近在复习(学习)Vue.js 相关的知识,其中路由Router和参数传递是一个十分重要且较难的知识。于是花时间整理了一下下,希望对自己有用~

1. 通过 name 传递参数

export default new Router({
   routes: [
       {
           path: '/',
           name: 'index',
           component: index
       },{
           path: '/page',
           name: 'page',
           component: page
       }
   ] 
});

我们常把页面的路由配置在 /src/router 文件夹下的 index.js 文件中,如上为配置的内容。这其中的 name 属性是可以作为参数传递的,在模版中直接只用 {{$route.name}} 接收,即可以在模版中显示。


2. 通过 < router-link > 中的 to 传递参数

使用 < router-link to=" /page "> page < /router-link > 可以实现页面的跳转,这里面 to 是可以带上参数跳转的,我们需要在给 to 进行绑定,即 :to(v-bind:to)

<router-link :to="{name:'page',params:{data:'我是App.vue传至page.vue的参数'}}" >page</router-link>
  • 这其中需要注意的是要给 to 加上绑定,后面跟的是对象形式的字符串。
  • 其中的 name 是我们在路由配置文件(上图图二)中配置的 name 两者要对应。
  • params 即是我们要传的参数,它可以是多个值。

随后在对应的模版页面中(这里为 page.vue)进行接收。

{{$route.params.data}}  

3. 在业务逻辑中实现页面跳转并传参

当在业务逻辑中需要实现页面跳转经常能够使用到编程式导航:

  • this.$router.go(1),进入下一级
  • this.$router.back(-1),返回上一级,通俗的说就是前进与后退。
  • this.$router.push(’/page’),跳转到 page.vue

那么我们应该如何传递参数呢?例如,我们在判断完某个条件后需要跳转到 page 页并且需要传递 ageaddress 两个参数过去,我们的操作方法是:

App.vue

<div @click="toPage">page</div>

我们在需要的地方加上点击事件:

toPage(){
      this.$router.push({
        name: 'page',
        params: {
          age: 22,
          address: 'China'
        }
      })
    }

随后在 methods 中写入该事件,需要注意的是这里面的 name 同样是要与在配置路由时配置的 name 属性保持一致。
params 是我们传入的参数,可以是常量也可以是变量。

page.vue
在 page.vue 中接收参数,可以在生命周期的 mounted() 接收并且放入 data ,再在模版上显示出来。

<template>
    <div>
        {{myage}}-{{myaddress}}
    </div>
</template>

<script>
    export default {
        name: "page111",
        data() {
            return {
                myage: '',
                myaddress: ''
            }
        },
        mounted(){
            // 在挂载时接收到参数并且赋值
            this.myage = this.$route.params.age;
            this.myaddress = this.$route.params.address;
        },
    }
</script>

4. 利用 url 传参

在项目开发过程中常常通过 url 进行参数传递,在 vue-cli 中该如何操作呢?

  1. 在配置路由处以冒号形式,在 url 后方加上参数(/src/router/index.js)

    {
     path: '/page/:pageId/:pageTitle',
     name: 'page',
     component: page
    }
  2. <router-link></router-link>to 属性中加入参数(App.vue)

    <template>
      <div id="app">
     <img src="./assets/logo.png"><br/>
       <router-link to="/" >index</router-link>
       <router-link to="/page/1/标题" >page</router-link>
     <router-view/>
      </div>
    </template>
  3. 在 page.vue 中接收参数

    <template>
     <div>
         <p>id: {{$route.params.pageId}}</p>
         <p>标题: {{$route.params.pageTitle}}</p>
     </div>
    </template>

5. 父组件与子组件之间传参

项目中组件是经常被使用到的,那么父组件与子组件之间的联动是非常重要的。

父传子

  1. 先建立一个组件并且使用,在 components 文件夹下新建 component.vue 文件作为组件。

    <template>
     <div>
         <p>我的组件 {{msg}}-{{content}}</p>
     </div>
    </template>
    
    <script>
     export default{
         name: 'child',
         props: ["msg","content"],
     }
    </script>

    随后在 page.vue 中引入该组件,在 <script> </script>import 且引用,随后在模版中使用,如下:

    <template>
     <div>
         <children></children>
     </div>
    </template>
    
    <script>
     import children from "./component";
     export default {
         name: "page",
         components: {
             children
         }
     }
    </script>

    要传递参数,可以在 <children> </children>标签中加入要传入的参数,并且在组件(component.vue)中使用 props 接收再使用插值在模版中显示。
    同时我们也可以给要传的参数绑定起来,如下第二种写法,在参数前加上冒号(v-bind)这样我们就能在 data 中编辑我们的参数了。

    // page.vue
    <children msg="我是信息" content="我是内容"></children>
    
    <children :msg="message" :content="content"></children>
    <script>
     import children from "./component";
     export default{
         name: 'page',
         components: {
             children
         },
         data(){
             return {
                 message: '我是信息',
                 content: '我是内容'
             }
         }
     }
    </script>
    
    // component.vue
    <p>我的组件 {{msg}}-{{content}}</p>
    
    <script>
     export default{
         name: 'child',
         props: ["msg","content"]
     }
    </script>

子传父

子组件再传值回父组件,在函数中使用 this.$emit()

// component.vue
<script>
    export default{
        name: 'component',
        data() {
            return {
                param:"需要传回的参数",
                data: "参数2"
            }
        },
        props: ["msg","content"],
        methods: {
            // 假设在子组件选择完毕后点击将 param 传回
            chooseOk(){
                // ...中间的逻辑处理省略
                this.$emit('changeData',this.param,this.data);
            }
        }
    }
</script>

在 page.vue 的 <children> 标签中加入 @changeData,即可在点击子组件之后在父组件出接收到传过来的参数

<children :msg="msg" :content="content" @changeData="dataChange"></children>

<script>
    import children from "./component";
    export default {
        name: "page",
        components: {
            children
        },
        methods: {
            dataChange(param,data){
                console.log(param + ',' + data);
            }
        }
    }
</script>

最后在附加一点,在父组件中该如何调用子组件中的函数呢,这里需要用到 ref 属性,添加在我们的 <children> 标签中

// page.vue
<div @click="ifClick">click</div>
<children ref="child" :msg="msg" :content="content" @changeData="dataChange"></children>
// page.vue
// 重复部分省略 ...
methods: {
    ifClick(){
        this.$refs.child.isClick();
    }
}

// component.vue
methods: {
    isClick(){
        console.log("父组件点击了");
    }
}
评论区
头像
    头像

    寻找华纳圣淘沙公司开户代理(183-8890-9465薇-STS5099】

    华纳圣淘沙官方合作开户渠道(183-8890-9465薇-STS5099】

    华纳圣淘沙公司开户代理服务(183-8890-9465薇-STS5099】

    华纳圣淘沙公司开户咨询热线(183-8890-9465薇-STS5099】

    联系客服了解华纳圣淘沙开户

    (183-8890-9465薇-STS5099】
    华纳圣淘沙公司开户专属顾问

    (183-8890-9465薇-STS5099】

    头像

    华纳圣淘沙开户步骤详解(183-8890-9465—?薇-STS5099【6011643】

    华纳圣淘沙公司开户流程全解析(183-8890-9465—?薇-STS5099【6011643】
    华纳圣淘沙公司账户注册指南(183-8890-9465—?薇-STS5099【6011643】
    新手如何开通华纳圣淘沙公司账户(183-8890-9465—?薇-STS5099【6011643】
    华纳圣淘沙企业开户标准流程(183-8890-9465—?薇-STS5099【6011643】
    华纳圣淘沙公司开户:从零到一(183-8890-9465—?薇-STS5099【6011643】
    官方指南:华纳圣淘沙公司开户流程(183-8890-9465—?薇-STS5099【6011643】
    华纳圣淘沙公司开户流程说明书(183-8890-9465—?薇-STS5099【6011643】

    头像

    果博东方客服开户联系方式【182-8836-2750—】?薇- cxs20250806】
    果博东方公司客服电话联系方式【182-8836-2750—】?薇- cxs20250806】
    果博东方开户流程【182-8836-2750—】?薇- cxs20250806】
    果博东方客服怎么联系【182-8836-2750—】?薇- cxs20250806】

    头像

    华纳东方明珠客服电话是多少?(▲18288362750?《?微信STS5099? 】
    如何联系华纳东方明珠客服?(▲18288362750?《?微信STS5099? 】
    华纳东方明珠官方客服联系方式?(▲18288362750?《?微信STS5099?
    华纳东方明珠客服热线?(▲18288362750?《?微信STS5099?
    华纳东方明珠24小时客服电话?(▲18288362750?《?微信STS5099? 】
    华纳东方明珠官方客服在线咨询?(▲18288362750?《?微信STS5099?

    头像

    华纳公司合作开户所需材料?电话号码15587291507 微信STS5099
    华纳公司合作开户所需材料?电话号码15587291507 微信STS5099
    华纳公司合作开户所需材料?电话号码15587291507 微信STS5099
    华纳公司合作开户所需材料?电话号码15587291507 微信STS5099
    华纳公司合作开户所需材料?电话号码15587291507 微信STS5099
    华纳公司合作开户所需材料?电话号码15587291507 微信STS5099
    华纳公司合作开户所需材料?电话号码15587291507 微信STS5099
    华纳公司合作开户所需材料?电话号码15587291507 微信STS5099

    头像
    tccxsmbhid
      

    2025年10月新盘 做第一批吃螃蟹的人coinsrore.com
    新车新盘 嘎嘎稳 嘎嘎靠谱coinsrore.com
    新车首发,新的一年,只带想赚米的人coinsrore.com
    新盘 上车集合 留下 我要发发 立马进裙coinsrore.com
    做了几十年的项目 我总结了最好的一个盘(纯干货)coinsrore.com
    新车上路,只带前10个人coinsrore.com
    新盘首开 新盘首开 征召客户!!!coinsrore.com
    新项目准备上线,寻找志同道合的合作伙伴coinsrore.com
    新车即将上线 真正的项目,期待你的参与coinsrore.com
    新盘新项目,不再等待,现在就是最佳上车机会!coinsrore.com
    新盘新盘 这个月刚上新盘 新车第一个吃螃蟹!coinsrore.com

    头像
    fsiaeofazn
      

    2025年10月新盘 做第一批吃螃蟹的人coinsrore.com
    新车新盘 嘎嘎稳 嘎嘎靠谱coinsrore.com
    新车首发,新的一年,只带想赚米的人coinsrore.com
    新盘 上车集合 留下 我要发发 立马进裙coinsrore.com
    做了几十年的项目 我总结了最好的一个盘(纯干货)coinsrore.com
    新车上路,只带前10个人coinsrore.com
    新盘首开 新盘首开 征召客户!!!coinsrore.com
    新项目准备上线,寻找志同道合的合作伙伴coinsrore.com
    新车即将上线 真正的项目,期待你的参与coinsrore.com
    新盘新项目,不再等待,现在就是最佳上车机会!coinsrore.com
    新盘新盘 这个月刚上新盘 新车第一个吃螃蟹!coinsrore.com

    头像
    qfbmuwuakj
      

    新车首发,新的一年,只带想赚米的人

    头像
    oxwwvslmsu
      

    文章中的实用建议和操作指南,让读者受益匪浅,值得珍藏。

    头像
    dyyjqofwru
      

    建议后续持续追踪此话题,形成系列研究。

    头像
    uwdpbpolxf
      

    《突进夹金山》动作片高清在线免费观看:https://www.jgz518.com/xingkong/154160.html

    头像
    jpxxjozqig
      

    《智齿2021》剧情片高清在线免费观看:https://www.jgz518.com/xingkong/29169.html

    头像
    upeqddfvzz
      

    你的文章总是能给我带来欢乐,谢谢你! http://www.55baobei.com/HMkTpyTsFI.html

    头像
    iaaxyaorja
      

    《极速前进第十八季》欧美剧高清在线免费观看:https://www.jgz518.com/xingkong/43783.html

    头像
    cymywwihgi
      

    你的文章让我感受到了正能量,非常棒! https://www.yonboz.com/video/21069.html

    头像
    vrgfgkivut
      

    你的文章内容非常精彩,让人回味无穷。 http://www.55baobei.com/4h8eaGMP5V.html

    头像
    bwqiskcuow
      

    你的才华横溢,让人敬佩。 http://www.55baobei.com/ddMVVVBuEn.html

    头像
    roionazmab
      

    博主太厉害了!

    头像
    sllmnziaye
      

    不错不错,我喜欢看 https://www.237fa.com/

    头像

    你好,看完你的博客文章,感觉很不错!希望与你网站首页友情链接
    流量卡知识网
    http://53go.cn/
    专注于移动/联通/电信推出的大流量多语音活动长短期套餐手机卡的相关知识的介绍普及

    听说互换友情链接可以增加网站的收录量,特此来换,如果同意的话就给internetyewu@163.com[微信ganenboy]发信息或者就在此回复下吧!

文章目录