Vue中组件间传值常用的几种方式
版本说明: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获取指定的子组件
父组件代码:
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学习(二)-Vue中组件间传值常用的几种方式
版本说明:vue-cli:3.0 主要分为两类: 1.父子组件间的传值 2.非父子组件间的传值 1.父子组件间传值 父组件向子组件传值 第一种方式: props 父组件嵌套的子组件中,使用v-bind ...
- Vue中组件间通信的方式
Vue中组件间通信的方式 Vue中组件间通信包括父子组件.兄弟组件.隔代组件之间通信. props $emit 这种组件通信的方式是我们运用的非常多的一种,props以单向数据流的形式可以很好的完成父 ...
- vue中父子间传值和非父子间传值
vue传值一般分三种方式:父组件向子组件传值.子组件向父子间传值.非父子组件进行传值 一.父组件向子组件传值:父组件引用子组件后,通过数据绑定(v-bind)向子组件传值 父组件: <templ ...
- Vue之组件间传值
标签: Vue Vue之父子组件传值 父向子传递通过props 子向父传递通过$emit 演示地址 代码示例如下: <!DOCTYPE html> <html lang=" ...
- vue——父子组件间传值
(1)父组件给子组件传值(商品详情页): 根据订单类型,判断显示立即购买/立即拼单: 通过props来传递参数 父组件(商品详情页) 父组件调用子组件,在子组件的标签中,通过:数据名称=”数据”的形式 ...
- vue中通过路由跳转的三种方式
原文:https://blog.csdn.net/qq_40072782/article/details/82533477 router-view 实现路由内容的地方,引入组件时写到需要引入的地方需要 ...
- vue中组件间的传参
1.父传子 父组件准备一个数据,通过自定义属性给子组件赋值,进行传递 在子组件中通过 props 属性来接收参数 <body> <div id="app"> ...
- Spring框架中获取连接池常用的四种方式
1:DBCP数据源 DBCP类包位于 /lib/jakarta-commons/commons-dbcp.jar,DBCP是一个依赖Jakarta commons-pool对象池机制的数据库连接池,所 ...
- Vue组件间通信方式到底有几种
1. 前言 Vue的一个核心思想就是组件化.所谓组件化,就是把页面拆分成多个组件 (component),每个组件依赖的 CSS.JavaScript.模板.图片等资源放在一起开发和维护.组件是资源独 ...
随机推荐
- pyc文件是什么
pyc 是一种二进制文件,是由 py 文件经过编译后,生成的文件,是一种 bytecode,py 文件变成 pyc 文件后,加载的速度有所提高,而且 pyc 是一种跨平台的字节码,是由 Python ...
- ajax提交表单包括文件
<script src="${pageContext.request.contextPath}/assets/js/jquery-1.8.3.js"></scri ...
- winform 自定义控件属性在属性面板中显示
Jan.David Nothing is impossible, the word itself says 'I'm possible'!" — Audrey Hepburn winform ...
- github ssh秘钥配置
1.本地生产ssh密钥对 ssh-keygen -t rsa -C "your_email@example.com" 2. 进入~/.ssh 拷贝公钥进入github里面
- python 列表使用
下面实现的类似于java中的数组: names[-2]表示实现倒数的第2个参数 names[-3,-1]表示实现-3到-1的值不包含-1 增删改查 下面代码实现列表的增删改查功能: 复制copy 深c ...
- gensim word2vec |来自渣渣硕的学习笔记
最近写论文跑模型,要用到word2vec,但是发现自己怎么也看不懂网上的帖子,还是自己笨吧,所以就有了我的第一篇博客!!! 关于word2vec工具打算写一个系列的,当然今天这篇文章只打算写: 如何 ...
- 【转】从phpMyAdmin批量导入Excel内容到MySQL(亲测非常简洁有效)
今天做项目遇到需要用phpMyAdmin批量导入Excel内容到MySQL数据库.分析了我的踏坑经历并且总结一最便捷的一套导入数据的方法,非常实用简洁: 1.修改Excel表的数据,使得Excel中的 ...
- paper 168: 2018-FATTEN 论文解析-feature space transfer for data augmentation
paper download:https://arxiv.org/abs/1801.04356 本文的核心就是使用GAN网络生成新的数据. 这个总体框图,常规结构,具体是通过在appearance和p ...
- excel 中相乘函数
excel 中相乘函数 “PRODUCT”并且是公式的框框,格式要是 常规,不能是文本
- AngularJS ng-model 指令
AngularJS ng-model 指令 ng-model 指令用于绑定应用程序数据到 HTML 控制器(input, select, textarea)的值. 代码示例如下: <!DOCTY ...