版本说明: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学习(二)-Vue中组件间传值常用的几种方式的更多相关文章

  1. Vue中组件间传值常用的几种方式

    版本说明: vue-cli:3.0 一.父子组件间传值 1.props/$emit -父组件==>>子组件: 子组件中通过定义props接收父组件中通过v-bind绑定的数据 父组件代码 ...

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

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

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

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

  4. Vue 组件间传值

    前言 Vue 作为现在比较火的框架之一,相信您在使用的过程中,也会遇到组件间传值的情况,本文将讲解几种 Vue 组件间传值的几种方法,跟着小编一起来学习一下吧! 实现 注意: 学习本文,需要您对 Vu ...

  5. vue学习目录 vue初识 this指向问题 vue组件传值 过滤器 钩子函数 路由 全家桶 脚手架 vuecli element-ui axios bus

    vue学习目录 vue学习目录 Vue学习一之vue初识 Vue学习二之vue结合项目简单使用.this指向问题 Vue学习三之vue组件 Vue学习四之过滤器.钩子函数.路由.全家桶等 Vue学习之 ...

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

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

  7. Vue学习笔记-Vue.js-2.X 学习(二)===>组件化开发

    ===重点重点开始 ========================== (三) 组件化开发 1.创建组件构造器: Vue.extends() 2.注册组件: Vue.component() 3.使用 ...

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

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

  9. python 全栈开发,Day91(Vue实例的生命周期,组件间通信之中央事件总线bus,Vue Router,vue-cli 工具)

    昨日内容回顾 0. 组件注意事项!!! data属性必须是一个函数! 1. 注册全局组件 Vue.component('组件名',{ template: `` }) var app = new Vue ...

随机推荐

  1. 这是你没见过的不一样的redis

    转: 这是你没见过的不一样的redis 提到Redis,大家一定会想到的几个点是什么呢? 高并发,KV存储,内存数据库,丰富的数据结构,单线程(6版本之前) 那么,接下来,上面提到的这些,都会一一给大 ...

  2. 微信小程序折线图表折线图加区域图

    1.先来个效果图 这里我用的是插件@antv/f2-canvas(安装的方法如下) npm init 此处如果直接使用官方npm install 可能会出现没有node_modules错误 npm i ...

  3. jQuery实现QQ简易聊天框

    实现效果: html代码: <section id="chat"> <div class="chatBody"></div> ...

  4. Java的特性和优势以及不同版本的分类,jdk,jre,jvm的联系与区别,javadoc的生成

    Java 1.Java的特性和优势 Write Once,Run Anywhere 简单性 面向对象 可移植性 高性能 分布式 动态性 多线程 安全性 健壮性 2.Java的三大版本 JavaSE:标 ...

  5. IT求职 非技术面试题汇总

    原文链接:https://blog.csdn.net/weixin_40845165/article/details/89852397 说明:原文是浏览网页时无意间看到的.扫了一眼,总结得还不错,感谢 ...

  6. [实战]ASP.NET Padding Oracle信息泄露漏洞

    前言 这个漏洞是很多年前的了,刚好碰到网站有这个漏洞,利用一下也记录一下.具体原理请搜索学习,反正我不会. 推荐看这里,写得很清楚:http://www.91ri.org/6715.html 工具 p ...

  7. WPF 基础 - 图片与 base64

    1. base64 转图片 将 base64 转成 byte[] 将 byte[] 作为内存流保存到一个 BitmapImage 实例的流的源 把 BitmapImage 作为目标图片的 Source ...

  8. 从零开始编写一个BitTorrent下载器

    从零开始编写一个BitTorrent下载器 BT协议 简介 BT协议Bit Torrent(BT)是一种通信协议,又是一种应用程序,广泛用于对等网络通信(P2P).曾经风靡一时,由于它引起了巨大的流量 ...

  9. 接口自动化——读取Excle中遇到的问题

    一.module 'openpyxl' has no attribute 'load_workbook'问题 原因:在pycharm中py文件名字为openpyxl导致 修改方法:重新对py名字进行命 ...

  10. UnboundLocalError: local variable 'foo' referenced before assignment Python常见错误

    在定义局部变量前在函数中使用局部变量(此时有与局部变量同名的全局变量存在) 在函数中使用局部变来那个而同时又存在同名全局变量时是很复杂的, 使用规则:如果在函数中定义了任何东西,如果它只是在函数中使用 ...