版本说明:vue-cli:3.0

主要分为两类:

  1.父子组件间的传值

  2.非父子组件间的传值

1.父子组件间传值

  父组件向子组件传值

  第一种方式:

      props   

      父组件嵌套的子组件中,使用v-bind:msg=‘xxxx’进行对象的绑定,子组件中通过定义props接收对应的msg对象如图

      父组件代码

<template>
<div>
<!-- 注意 :msg 后面是一个对象,值是字符串时,需要写冒号,如果省略:就是一个字符串 -->
<!-- <m-child msg="from Parent msg" ></m-child> -->
<m-child v-bind:msg="'from Parent msg'" ></m-child>
</div>
</template> <script>
// 引入子组件
import MChild from './Child'
export default {
data () {
return {
msg: ''
}
},
components: {
MChild,
},

     子组件代码

<template>
<div>
<h5>{{msg}}</h5>
</div>
</template> <script>
export default {
// 要接受父组件传递的参数
props: {
msg: {
type: String,
default: ''
},
},

  第二种方式:

     使用$children获取子组件和父组件对象

     父组件代码:

 this.msg2=this.$children[0].msg

  第三种方式:

     使用$ref获取指定的子组件

        父组件代码:


  <m-child v-bind:msg="p2C" @showMsg='getChild' ref='child'></m-child>
this.c2P=this.$refs.child.msg33

  子组件向父组件传值

  第一种方式:

     使用$emit传递事件给父组件,父组件监听该事件

       子组件代码   

<button @click="pushMsg()"></button>
methods: {
pushMsg() {
this.$emit("showMsg", "这是子组件===>父组件的值");
}
},

      父组件代码

<m-child v-bind:msg="p2C" @showMsg='getChild' ref='child'></m-child>
methods: {
getChild(val) {
this.msg=val
},
}

  第二种方式:

     使用$parent.获取父组件对象,然后再获取数据对象

    子组件代码

  mounted() {
this.msg22 = this.$parent.msg2;
}

        

二.非父子组件间传值

  1.事件总线

    原理上就是建⽴立⼀一个公共的js⽂文件,专⻔门⽤用来传递消息

    bus.js

import Vue from 'vue'
export default new Vue

    在需要传递消息的地⽅方引⼊入

mport bus from './util/bus'
methods: {
passMsg () {
bus.$emit('msg', 'i am from app')
}
},

      传递消息,在需要接受消息的地方使用bus.$on接受消息

mounted () {
bus.$on('msg', (val) => {
this.childMsg = val
});

  2.$sttrs/listeners 用于多级组件间传值的问题

     解决多级组件间传值的问题
     $attr 将⽗父组件中不不包含props的属性传⼊入⼦子组件,通常配合 interitAttrs 选项

    组件A传递到组件C,使用组件B作为桥梁A-B-C

组件A
<template>
<div id="app">
<!-- this is app -->
<m-parent :msg="a" :msgb="b" :msgc="c"></m-parent>
</div>
</template>

     组件B

<template>
<div>
<m-child v-bind="$attrs"></m-child>
</div>
</template>

    组件C    注意:如果组件C中有props属性接受的对象的化,组件A传递的对象就会被自动过滤掉


props: {
msg: {
type: String,
default: ''
},
}

 mounted () {
console.log('attrs',this.$attrs)
}

    一起使用。
    如果不不想在dom上出现属性,可设置interitAttrs: false
     $listeners监听⼦子组件中数据变化,传递给⽗父组件

  3.vuex

  

Vue中组件间传值常用的几种方式的更多相关文章

  1. Vue学习(二)-Vue中组件间传值常用的几种方式

    版本说明:vue-cli:3.0 主要分为两类: 1.父子组件间的传值 2.非父子组件间的传值 1.父子组件间传值 父组件向子组件传值 第一种方式: props 父组件嵌套的子组件中,使用v-bind ...

  2. Vue中组件间通信的方式

    Vue中组件间通信的方式 Vue中组件间通信包括父子组件.兄弟组件.隔代组件之间通信. props $emit 这种组件通信的方式是我们运用的非常多的一种,props以单向数据流的形式可以很好的完成父 ...

  3. vue中父子间传值和非父子间传值

    vue传值一般分三种方式:父组件向子组件传值.子组件向父子间传值.非父子组件进行传值 一.父组件向子组件传值:父组件引用子组件后,通过数据绑定(v-bind)向子组件传值 父组件: <templ ...

  4. Vue之组件间传值

    标签: Vue Vue之父子组件传值 父向子传递通过props 子向父传递通过$emit 演示地址 代码示例如下: <!DOCTYPE html> <html lang=" ...

  5. vue——父子组件间传值

    (1)父组件给子组件传值(商品详情页): 根据订单类型,判断显示立即购买/立即拼单: 通过props来传递参数 父组件(商品详情页) 父组件调用子组件,在子组件的标签中,通过:数据名称=”数据”的形式 ...

  6. vue中通过路由跳转的三种方式

    原文:https://blog.csdn.net/qq_40072782/article/details/82533477 router-view 实现路由内容的地方,引入组件时写到需要引入的地方需要 ...

  7. vue中组件间的传参

    1.父传子 父组件准备一个数据,通过自定义属性给子组件赋值,进行传递 在子组件中通过 props 属性来接收参数 <body> <div id="app"> ...

  8. Spring框架中获取连接池常用的四种方式

    1:DBCP数据源 DBCP类包位于 /lib/jakarta-commons/commons-dbcp.jar,DBCP是一个依赖Jakarta commons-pool对象池机制的数据库连接池,所 ...

  9. Vue组件间通信方式到底有几种

    1. 前言 Vue的一个核心思想就是组件化.所谓组件化,就是把页面拆分成多个组件 (component),每个组件依赖的 CSS.JavaScript.模板.图片等资源放在一起开发和维护.组件是资源独 ...

随机推荐

  1. Linux系统平台调优

  2. shell设置用户自己的环境变量

  3. Git --05 Gitlab使用

    目录 Gitlab使用 01. 外观配置 02. Gitlab汉化配置 03. 注册限制 04. 创建用户及组 05. 创建用户 06. 把用户添加到组 07. 创建项目 08. 推送代码到Gitla ...

  4. Python- 【python无法更新pip】提示python.exe: No module named pip

    用Anaconda安装的python 版本无法更新pip导致不能安装第三方库: 用Anaconda Prompt安装第三方库: python -m pip install --upgrade pip ...

  5. JDBC之Statement、PreparedStatement和CallableStatement

    JDBC提供了Statement.PreparedStatement和CallableStatement三种方式来执行查询语句,其中Statement用于通用查询,PreparedStatement用 ...

  6. 第二节:专做自己是小白——重新认识MySQL 学习记录

    一.安装MySQL的一些知识点 1.进程号是操作系统随机分配,每次启动程序都会有一个新的进程号.    2.mysql服务器进程默认名称MySQL,MySQL客户端进程默认名称mysql.    3. ...

  7. 【leetcode】719. Find K-th Smallest Pair Distance

    题目如下: 解题思路:对于这一类知道上限和下限,求第N位是什么的题目,可以先看看二分查找的方法可不可行.首先对nums进行排序,很显然任意两个元素距离绝对值最小是0,最大是nums[-1] - num ...

  8. Centos7安装Nginx1.14.0

    一.官网下载 http://nginx.org/en/download.html 版本说明: Nginx官网提供了三个类型的版本 Mainline version:Mainline 是 Nginx 目 ...

  9. Git 最全命令使用

    git init test 创建并管理一个文件 Git add . 添加到暂存区 Git commit -M '开始的开始' 造了一颗后悔药 Git log 查看版本记录 Git status 查看当 ...

  10. mybatis源码分析之01环境搭建

    直接使用maven搭建一个mybatis的运行环境 1. pom.xml <?xml version="1.0" encoding="UTF-8"?> ...