VUE学习-组件通信
vue组件通信
- 页面传值:
$route/${prop} - 组件传值:
- 父组件传值给子组件:参数传值
- 子组件传值给父组件:给父组件传过来函数传参数;通过插槽的v-slot,绑定参数
组件通信一般分为以下几种情况:
- 父子组件通信
- 兄弟组件通信
- 跨多层级组件通信
- 任意组件
父子通信
父组件通过 props 传递数据给子组件,子组件通过 emit 发送事件传递数据给父组件
父子通信方式也就是典型的单向数据流,父组件通过 props 传递数据,子组件不能直接修改 props, 而是必须通过发送事件的方式告知父组件修改数据。
还可以通过访问 $parent 或者 $children 对象来访问组件实例中的方法和数据。
父传值给子组件
props传值
- 父组件
<template>
<div>
<children :info ="messgae"></children>
</div>
</template>
<script>
import children from './children.vue'
export default {
data(){
return{
messgae:'我是父组件'
}
},
components:{
children
}
}
</script>
<style></style>
- 子组件
<template>
<div>{{info}}</div>
</template>
<script>
export default {
props:['info']
}
</script>
<style></style>
子组件给向父组件传递事件
$emit
- 父组件
<template>
<div>
{{ newData }}
<children @event1="change($event)"></children>
</div>
</template>
<script>
import children from './children'
export default {
data() {
return {
newData: '这是父组件的数据'
}
},
methods: {
change(data) {
this.newData = data;
}
},
components: {
children
}
}
</script>
<style></style>
- 子组件
<template>
<div>
<h1>我是子组件</h1>
<button @click="toParent">向父组件传值</button>
</div>
</template>
<script>
export default {
data() {
return {
data1: '子组件的数据'
}
},
created(){
console.log(222)
},
methods: {
toParent:function() {
this.$emit('event1', this.data1)
}
}
}
</script>
<style scoped></style>
兄弟组件通信
这种情况可以通过查找父组件中的子组件实现,也就是 this.\(parent.\)children,在 $children 中可以通过组件 name 查询到需要的组件实例,然后进行通信。
跨多层次组件通信
对于这种情况可以使用 Vue 2.2 新增的 API provide / inject,虽然文档中不推荐直接使用在业务中,但是如果用得好的话还是很有用的。
假设有父组件 A,然后有一个跨多层级的子组件 B
// 父组件 A
export default {
provide: {data: 1}
}
// 子组件 B
export default {
inject: ['data'],
mounted() {
// 无论跨几层都能获得父组件的 data 属性
console.log(this.data) // => 1
}
}
任意组件
这种方式可以通过 Vuex 或者 Event Bus 解决,另外如果你不怕麻烦的话,可以使用这种方式解决上述所有的通信情况
VUE学习-组件通信的更多相关文章
- Vue 兄弟组件通信(不使用Vuex)
Vue 兄弟组件通信(不使用Vuex) 项目中,我们经常会遇到兄弟组件通信的情况.在大型项目中我们可以通过引入vuex轻松管理各组件之间通信问题,但在一些小型的项目中,我们就没有必要去引入vuex.下 ...
- Vue兄弟组件通信
Vue兄弟组件通信之借助中央事件总线 下载链接:https://www.yinxiangit.com 其实要实现兄弟组件通信,就算是通过父子组件通信的方式也是可以达到的,如 子 ——>父——&g ...
- Vue父子组件通信(父级向子级传递数据、子级向父级传递数据、Vue父子组件存储到data数据的访问)
Vue父子组件通信(父级向子级传递数据.子级向父级传递数据.Vue父子组件存储到data数据的访问) 一.父级向子级传递数据[Prop]: ● Prop:子组件在自身标签上,使用自定义的属性来接收外界 ...
- vue学习指南:第七篇(详细) - Vue的 组件通信
Vue 的 父传子 子传父 一.父组件向子组件传值: 父传子 把需要的数据 传递给 子组件,以数据绑定(v-bind)的形式,传递到子组件内部,供子组件使用 缩写是(:) 1.创建子组件,在src/ ...
- vue 父子组件通信
算是初学vue,整理一下父子组件通信笔记. 父组件通过 prop 给子组件下发数据,子组件通过事件给父组件发送消息. 一.父组件向子组件下发数据: 1.在子组件中显式地用props选项声明它预期的数据 ...
- vue 父子组件通信详解
这是一篇详细讲解vue父子组件之间通信的文章,初始学习vue的时候,总是搞不清楚几个情况 通过props在父子组件传值时,v-bind:data="data",props接收的到底 ...
- vue 父子组件通信props/emit
props 1.父组件传递数据给子组件 父组件: <parent> <child :childMsg="msg"></child>//这里必须要 ...
- vue中组件通信
组件的通信 1. 父子组件通信 案例: //父子组件通信思路 // 1 将父组件的数据传给子组件 在子组件上自定义单项数据绑定 // 2 子组件用props 接受自定义的那个:号属性 Vue.co ...
- vue父子组件通信高级用法
vue项目的一大亮点就是组件化.使用组件可以极大地提高项目中代码的复用率,减少代码量.但是使用组件最大的难点就是父子组件之间的通信. 子通信父 父组件 <template> <div ...
- vue之组件通信
vue组件通信一般分为以下几种情况: 1.父子组件通信: 2.兄弟组件通信: 3.跨多层级组件通信: 一.父子通信 父组件通过props传递数据给子组件,子组件通过emit发送事件传递数 ...
随机推荐
- vue中input触发方法中调用ajax,导致input失去焦点问题
发现在vue中监控input绑定的值,调用方法时,如果方法中有调用后端接口(使用Ajax),会导致input输入框失去焦点,这样导致的问题就是每输入一个字符,就要重新聚焦一次,可通过以下方式在方法中重 ...
- python备份文件(简易)
步骤逻辑 要备份的文件夹:source = ["/opt/containerd"] 保存备份信息的文件夹 targz_dir = "/home/backup" ...
- myJRebel 已不可用
周末在家里撸代码,突然 IDEA 提示 JRebel 需要激活. 原来一直使用的 myJRebel 的激活码,天真的以为是我的网络问题,尝试重新激活,结果不管用,就想去 myJrebel 的网站上去看 ...
- linux挂载磁盘步骤
一.查看需要挂载设备,如下sda(默认路径/dev/sda) 二.新建分区,执行如下命令进入操作 fdisk /dev/sda 1.m 查看可操作的命令 2.键入 n ,根据需要新建分区 3.键入 d ...
- Oracle UNDO表空间的管理
Oracle UNDO表空间的管理 UNDO表空间的管理是Oracle DBA最重要的日常工作之一,UNDO表空间用来暂时存储DML操作的数据,其主要作用有: 1.事务回滚 2.实例恢复 3.读一致性 ...
- SSLCipherCheck_v1.4.2
Usage: sslciphercheck.exe -h <Host> -p <Port> -u <URL> -c <CSV File> -i < ...
- vue-seamless-scroll 组件用法-区域内容滚动效果
1.滚动效果 2.代码 <div class="page-container" style=""> <vue-seamless-scroll ...
- 基于Antlr的Modelica3.5语言解析
背景 Modelica语言是一种统一面向对象的系统建模语言 官方文档中明确写明了语法规范 在附录的第一章词法,第二章语法都完整的罗列的语言规范,对于Antlr适配特别好 只需要把[]修改为Antlr的 ...
- Spring Boot 配置 Swagger(3.0.0 版本)
添加 Swagger 依赖 <!-- https://mvnrepository.com/artifact/io.springfox/springfox-boot-starter --> ...
- solt废弃,报错解决方法
1.饿了么组件库给出得文字提示框 写到项目里之后报错 提示 solt已经废弃 <el-tooltip placement="top"> <div slot=&qu ...