iis服务器助手广告广告
返回顶部
首页 > 资讯 > 前端开发 > html >vue如何传参数
  • 858
分享到

vue如何传参数

2024-04-02 19:04:59 858人浏览 薄情痞子
摘要

这篇文章给大家分享的是有关Vue如何传参数的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。 传参数的方法:1、父子组件间利用“props”和“$emit

这篇文章给大家分享的是有关Vue如何传参数的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

传参数的方法:1、父子组件间利用“props”和“$emit”进行传参;2、爷孙组件间利用“provide”和“inject”进行传参;3、兄弟组件间利用公共文件来传参;4、路由间使用“query”和“params”来传参。

教程操作环境:windows7系统、vue2.9.6版,DELL G3电脑。

Vue中常见参数传递方式

  • 组件通信——vue中父子组件间的方法调用和参数传递props、$emit

  • 组件通信——爷孙组件间的传参provide、inject

  • 组件通信——兄弟组件间的传参bus.js

  • 路由间的传参query、params

一、父子组件

1.1父传子(props)

<!-- 父组件father.vue -->
<template>
  <div>
    <div>这里是father组件</div>
    <div>这是父组件要传给子组件的参数:{{msg}}</div>
    <!-- 1.传递:data1为动态参数msg的参数名,名字自定义,与子组件接收参数名同名
    data2为静态参数的参数名,名字自定义,与子组件接收参数名同名 -->
    <child :data1="msg" data2="777"></child>
  </div>
</template>
<script>
  import child from "./child";
  export default {
      data() {
          return {
              msg:"666"
          }
      },
    components: {
      child
    }
  };
</script>
<!-- 子组件child.vue -->
<template>
  <div>
    <div>这里是child组件</div>
    <!-- 3.使用:这里就是接收的父组件参数 -->
    <div>接受的父组件动态参数:{{ data1 }}</div>
    <div>接受的父组件静态参数:{{ data2 }}</div>
    <div>接受的父组件参数:{{ data }}</div>
  </div>
</template>
<script>
  export default {
    // 2.接收:props接收父组件参数,data1与data2为传递参数的参数名,与父组件内同名
    props: ["data1", "data2"],
    data() {
      return {
        data: "默认值"
      };
    },
    // 3.使用:直接用this调用
    mounted() {
      this.data = this.data1;
    }
  };
</script>

页面数据效果如下

vue如何传参数

这里要稍微注意一下,父组件所传递参数如果是需要在生命周期中获取赋值,就不能绑定在mounted中,否则子组件方法中this调用不会成功。生命周期顺序:父beforeMount->子beforeCreate……子mounted->父mounted

1.2子传父($emit)

<!-- 子组件child.vue -->
<template>
  <div>
    <div>这里是child组件</div>
    <!-- 这里就是接收的父组件参数 -->
    <input type="button" value="点击向父组件传参" @click="toFather">
  </div>
</template>
<script>
  export default {
    data(){
      return{
        cmsg:'我是子组件的参数'
      }
    },
    methods: {
      toFather(){
        // 1.子组件触发父组件方法
        // $emit第一个参数为所要触发的父组件函数,函数名可自定义但要与父组件中对应函数名同名
        // $emit第二个参数就是子组件向父组件传递的参数
        this.$emit('receive',this.cmsg);
      }
    },
  };
</script>
<style scoped></style>
<!-- father.vue -->
<template>
  <div>
    <div>这里是father组件</div>
    <div>接收子组件参数:{{fmsg}}</div>
    <!-- 2.在对应子组件上绑定函数,这里“receive”是函数名,可自定义但要与子组件触发函数同名 -->
    <child @receive="fromChild"></child>
  </div>
</template>
<script>
  import child from "./child";
  export default {
    data() {
      return {
        fmsg:''
      };
    },
    methods: {
      // 接收子组件参数,赋值
      fromChild(data){
        this.fmsg=data;
      }
    },
    components: {
      child
    }
  };
</script>
<style scoped></style>

点击按钮后页面效果图如下

vue如何传参数

1.3父组件调用子组件方法($on)

<!-- father.vue -->
<template>
    <div>
        <div @click="click">点击父组件</div>
        <child ref="child"></child>
    </div>
</template>

<script>
    import child from "./child";
    export default {
        methods: {
            click() {
                this.$refs.child.$emit('childMethod','发送给方法一的数据') // 方法1:触发监听事件
                this.$refs.child.callMethod() // 方法2:直接调用
            },
        },
        components: {
            child,
        }
    }
</script>
<!-- child.vue -->
<template>
    <div>子组件</div>
</template>

<script>
    export default {
        mounted() {
            this.monitoring() // 注册监听事件
        },
        methods: {
            monitoring() { // 监听事件
                this.$on('childMethod', (res) => {
                    console.log('方法1:触发监听事件监听成功')
                    console.log(res)
                })
            },
            callMethod() {
                console.log('方法2:直接调用调用成功')
            },
        }
    }
</script>

二、爷孙组件的参数传递(provide和inject,不受组件层级影响)

provideinject 主要为高阶插件/组件库提供用例。并不推荐直接用于应用程序代码中。
官方文档:
https://cn.vuejs.org/v2/api/#provide-inject
https://cn.vuejs.org/v2/guide/components-edge-cases.html#依赖注入

<!-- grandpa.vue -->
        data() {
            return {
                msg: 'A'
            }
        },
        provide() {
            return {
                message: this.msg
            }
        }
<!-- father.vue -->
        components:{child},
        inject:['message'],
<!-- child.vue -->
        inject: ['message'],
        created() {
            console.log(this.message)    // A
        },

三、兄弟组件的参数传递(bus.js)

3.1创建公交bus.js

vue如何传参数

3.2像兄弟组件传递参数

import Bus from "@/utils/bus";   //注意引入
    export default {
        data(){
            return {
                num:1
            }
        },
        methods: {
            handle(){
                Bus.$emit("brother", this.num++, "子组件向兄弟组件传值");
            }
        },
    }

3.3接受兄弟组件的参数

import Bus from "@/utils/bus";   //注意引入
    export default {
        data(){
            return {
                data1:'',
                data2:''
            }
        },
        mounted() {
            Bus.$on("brother", (val, val1) => {    //取 Bus.$on
                this.data1 = val;
                this.data2 = val1;
            });
        },
    }

四、路由间的参数传递(query和params)

query和parmas的使用方式大致相同,这里简单介绍一下路由配置、参数的传递和调用

4.1params,参数显示在url

// router的配置
    {
      path: "/two/:id/:data",     // 跳转的路由后加上/:id,多个参数继续按格式添加,数据按顺序对应
      name: "two",
      component: two
    }

// 跳转,这里message为123
  this.$router.push({
    path: `/two/${this.message}/456`     // 直接把数据拼接在path后面
  });
 // 接收
  created() {
      this.msg1=this.$route.params.id    // 123
      this.msg2=this.$route.params.data  // 456
   }

// url显示,数据显示在url,所以这种方式传递数据仅限于一些不那么重要的参数
  /two/123/456

4.2params,参数不显示在url,刷新页面数据消失

// router的配置
    {
      path: "/two",
      name: "two",
      component: two
    }
// 跳转,这里message为123
    this.$router.push({
      name: `two`,    // 这里只能是name,对应路由
      params: { id: this.message, data: 456 }
    });
 // 接收
  created() {
      this.msg1=this.$route.params.id    // 123
      this.msg2=this.$route.params.data  // 456
   }

// url显示,数据不显示在url
  /two

4.3query,参数显示在url

// router的配置
    {
      path: "/two",
      name: "two",
      component: two
    }
// 跳转,这里message为123
    this.$router.push({
      path: `/two`,    // 这里可以是path也可以是name(如果是name,name:'two'),对应路由
      query: { id: this.message, data: 456 }
    });
 // 接收
  created() {
      this.msg1=this.$route.query.id    // 123
      this.msg2=this.$route.query.data  // 456
   }

// url显示,数据显示在url
  /two?id=123&data=456

感谢各位的阅读!关于“vue如何传参数”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

--结束END--

本文标题: vue如何传参数

本文链接: https://www.lsjlt.com/news/81359.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • vue如何传参数
    这篇文章给大家分享的是有关vue如何传参数的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。 传参数的方法:1、父子组件间利用“props”和“$emit...
    99+
    2022-10-19
  • vue如何通过$router.push传参数
    目录如何通过$router.push传参数this.$router.push传参及参数接收1、两种方式2、区别如何通过$router.push传参数 下面通过A页面向B页面传值来举个...
    99+
    2022-11-13
  • vue中如何通过函数传参数
    目录vue通过函数传参数vue事件函数传参总结vue通过函数传参数 一,通过点击事件本身的js特性传参。 <view class="center_menu">      ...
    99+
    2023-05-14
    vue函数传参数 vue参数 函数传参数
  • Vue之请求如何传递参数
    目录一、get请求1、直接拼接2、params属性二、post请求1、data属性传递2、params属性传递三、常见的 Content-Type 类型1、application/x...
    99+
    2023-05-14
    Vue请求传递参数 Vue请求 Vue传递参数
  • vue路由如何传参
    在vue中实现路由传参的方法有:1.通过params实现传参;2.通过query实现传参;3.调用$router.push实现传参;具体方法如下:通过params实现路由传参使用路由属性中的name来匹配路由,在通过params传递参数,但...
    99+
    2022-10-20
  • vue路由传参-如何使用encodeURI加密参数
    目录使用encodeURI加密参数比如参数是一个对象obj解密方式是使用decodeURIvue路由加密传参传参页面接收页面使用encodeURI加密参数 在路由切换时页面需要使用地...
    99+
    2022-11-13
  • vue如何将函数作为参数传递
    在vue中将函数作为参数传递的方法:1.新建vue.js项目;2.定义函数用于测试;3.封装函数;4.使用this.clickEnter方法做参数传递;具体步骤如下:首先,在vue-cli中创建一个vue.js项目;vue create p...
    99+
    2022-10-04
  • Vue如何实现router传参
    本文小编为大家详细介绍“Vue如何实现router传参”,内容详细,步骤清晰,细节处理妥当,希望这篇“Vue如何实现router传参”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。vue-router 参数传递的方...
    99+
    2023-07-04
  • vue前端如何向后端传递参数
    目录前端向后端传递参数get方法传参post方法传参vue前后端传参问题前端向后端传递参数 get方法传参 get方法传参,我们只需要把要传递的参数拼接到要发送的路径地址后面。 实例...
    99+
    2022-11-13
  • vue router-link传参以及参数怎么用
    这篇文章主要为大家展示了“vue router-link传参以及参数怎么用”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“vue router-link传参以及参...
    99+
    2022-10-19
  • Vue中$router.push()路由切换及如何传参和获取参数
    目录1、路由的两种常见方式2、传参和获取参数(query和params)总结 1、路由的两种常见方式 1)声明式: <router-link to="/login"...
    99+
    2023-05-13
    vue $router.push()路由切换 vue路由切换页面 vue 路由切换
  • 如何用vue实现组件间参数传递
    这篇文章主要介绍“如何用vue实现组件间参数传递”,在日常操作中,相信很多人在如何用vue实现组件间参数传递问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何用vue实现组件间参数传递”的疑惑有所帮助!接下来...
    99+
    2023-07-04
  • Vue请求怎么传递参数
    本篇内容介绍了“Vue请求怎么传递参数”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、get请求get请求没有请求体,传递的参数是添加到u...
    99+
    2023-07-05
  • Vue中mapMutations传递参数方式
    目录通过子组件定义的方法传递参数在…mapMutations引用当然也可以写直接传递关于mapMutations的作用通过子组件定义的方法传递参数 在…m...
    99+
    2022-11-13
  • vue和js怎么传递参数
    Vue 和 JavaScript 是两个不同的技术,但它们经常一起使用。在 Vue 中,传递参数的方式与传递参数的方式在 JavaScript 中是相同的。本文将介绍 Vue 和 JavaScript 中传递参数的方法。Vue 中传递参数的...
    99+
    2023-05-24
  • vue怎么通过$router.push传参数
    今天小编给大家分享一下vue怎么通过$router.push传参数的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。如何通过$r...
    99+
    2023-07-02
  • 如何处理vue router 路由传参刷新页面参数丢失
    目录概述方法一:通过 params 传参方法二:通过 query 传参方法三:使用 props 配合组件路由解耦概述 常见场景:点击列表的详情,跳转到详情内页,在内页根据传递的参数获...
    99+
    2022-11-12
  • vue中如何使用params、query传参
    这篇文章主要介绍vue中如何使用params、query传参,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!声明式:<router-link :to="..."...
    99+
    2022-10-19
  • Vue中如何实现路由传参
    本篇文章给大家分享的是有关Vue中如何实现路由传参,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。情景模拟:A页面中,有一些div是根据A中的b...
    99+
    2022-10-19
  • vue如何自定义事件传参
    目录自定义事件传参先来简单看个例子自定义事件的$event传参问题原生vue里的$event自定义事件里的$event自定义事件传参 先来简单看个例子 TodoList.vue : ...
    99+
    2022-11-13
软考高级职称资格查询
推荐阅读
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作