Vue学习(二)-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.props/$emit -父组件==>>子组件: 子组件中通过定义props接收父组件中通过v-bind绑定的数据 父组件代码 ...
- Spring框架中获取连接池常用的四种方式
1:DBCP数据源 DBCP类包位于 /lib/jakarta-commons/commons-dbcp.jar,DBCP是一个依赖Jakarta commons-pool对象池机制的数据库连接池,所 ...
- Vue组件间通信方式到底有几种
1. 前言 Vue的一个核心思想就是组件化.所谓组件化,就是把页面拆分成多个组件 (component),每个组件依赖的 CSS.JavaScript.模板.图片等资源放在一起开发和维护.组件是资源独 ...
- Vue 组件间传值
前言 Vue 作为现在比较火的框架之一,相信您在使用的过程中,也会遇到组件间传值的情况,本文将讲解几种 Vue 组件间传值的几种方法,跟着小编一起来学习一下吧! 实现 注意: 学习本文,需要您对 Vu ...
- vue学习目录 vue初识 this指向问题 vue组件传值 过滤器 钩子函数 路由 全家桶 脚手架 vuecli element-ui axios bus
vue学习目录 vue学习目录 Vue学习一之vue初识 Vue学习二之vue结合项目简单使用.this指向问题 Vue学习三之vue组件 Vue学习四之过滤器.钩子函数.路由.全家桶等 Vue学习之 ...
- vue中父子间传值和非父子间传值
vue传值一般分三种方式:父组件向子组件传值.子组件向父子间传值.非父子组件进行传值 一.父组件向子组件传值:父组件引用子组件后,通过数据绑定(v-bind)向子组件传值 父组件: <templ ...
- Vue学习笔记-Vue.js-2.X 学习(二)===>组件化开发
===重点重点开始 ========================== (三) 组件化开发 1.创建组件构造器: Vue.extends() 2.注册组件: Vue.component() 3.使用 ...
- Vue中组件间通信的方式
Vue中组件间通信的方式 Vue中组件间通信包括父子组件.兄弟组件.隔代组件之间通信. props $emit 这种组件通信的方式是我们运用的非常多的一种,props以单向数据流的形式可以很好的完成父 ...
- python 全栈开发,Day91(Vue实例的生命周期,组件间通信之中央事件总线bus,Vue Router,vue-cli 工具)
昨日内容回顾 0. 组件注意事项!!! data属性必须是一个函数! 1. 注册全局组件 Vue.component('组件名',{ template: `` }) var app = new Vue ...
随机推荐
- c++类的简介
一 类的定义 在c++中,我们使用"类"来描述"对象",可以说"类"的实现是c++OOP的核心. 类中包括对象的"属性" ...
- 保姆级别学生党安装Clion IDE(面向华师同学)
保姆级别学生党安装Clion IDE(面向华师同学) 界面UI 废话不多说,直接上图 具备功能 UI美观 (下面会介绍) 基础的代码编写能力 大容量的IDE插件 (下面会介绍) 代码补全,以及搭配Ki ...
- iOS 14.5 有啥新功能?Apple Watch 也能解锁 iPhone 了
转: iOS 14.5 有啥新功能?Apple Watch 也能解锁 iPhone 了 苹果今天发布了即将发布的 iOS 14.5 和 iPadOS 14.5 更新的第一个 Beta 版本,我们在其中 ...
- POJ-2387(原始dijkstra求最短路)
Til the Cows Come Home POJ-2387 这题是最简单的最短路求解题,主要就是使用dijkstra算法,时间复杂度是\(O(n^2)\). 需要注意的是,一定要看清楚题目的输入要 ...
- JVM-对象及对象内存布局
目录 前言 类与对象 对象类二分模型 对象 对象内存布局 JOL工具 对象头 Mark Word 类型句柄 对象头与锁膨胀 无锁 偏向锁 轻量级锁 重量级锁 重量级锁降级 实例数据 填充 对象生命周期 ...
- 通达OA 越权访问-2013/2015版本
漏洞参考 http://wiki.0-sec.org/0day/%E9%80%9A%E8%BE%BEoa/9.html 复现 根据⽹上的通达 OA的源码找这些敏感地址,如: /general/syst ...
- Debezium实现多数据源迁移(一)
背景: 某公司有三个数据库,分别为MySql.Oracle和PostgreSql.原有业务的数据都是来自于这三个DB,此处委托将原有的三个数据库整合成一个Mysql. 要求: 1.不影响原有系统的继续 ...
- Hznu_0j 1557
题目链接:http://acm.hznu.edu.cn/OJ/problem.php?id=1557 题解:将两个数组分别升序和降序排序后,累加差的绝对值. Ac代码: #include<std ...
- python2 虚拟环境
1.安装virtualenv pip install virtualenv 2.创建虚拟环境 virtualenv 虚拟环境名称 3.激活虚拟环境 source 虚拟环境目录/bin/activat ...
- [.net] 关于Exception的几点思考和在项目中的使用(三)
本文链接: https://www.cnblogs.com/hubaijia/p/about-exceptions-3.html 系列文章: 关于Exception的几点思考和在项目中的使用(一) 关 ...