Vue中父子组件的通信方式

一、Props + $emit

Props:父传子

父组件Parent.vue:
<Child :message="message" @changeMessage="message = $event" />

$emit:子传父

子组件Child.vue:
this.$emit('changeMessage','Bye')

在子组件里用$emit自定义一个事件并传参,父组件里监听事件

二、回调函数(callBack)

父传子:将父组件里定义的method作为props传入子组件

父组件Parent.vue:
<Child :changeMsgFn="changeMessage">
methods:changeMessage(){this.message = 'Bye'}
子组件Child.vue:
<button @click="changeMsgFn">
props:['changeMsgFn']

三、$parent + $children

可以获取父组件实例和子组件实例的集合

父组件Parent.vue:
this.$children[0].number = 50
子组件Child.vue:
getParentMessage(){return this.$parent.massage
}

四、provide + inject

父组件Parent.vue:
export default{provide:{message:'我是父组件里通过provide提供的信息'}
}
子组件Child.vue:
export default{inject:['message']
}

五、$attrs + $listeners

$attrs 包含了从父组件传过来的所有props属性

适用于多级通信

父组件Parent.vue:
<Child :name="name" :age="age"/>子组件Child.vue:
<GrandChild v-bind="$attrs" />孙子组件GrandChild
<p>姓名:{{$attrs.name}}</p>
<p>年龄:{{$attrs.age}}</p>

$listeners包含了父组件监听的左右事件

父组件Parent.vue:
<Child :name="name" :age="age" @changeNameFn="changeName"/>子组件Child.vue:
<button @click="$listeners.changeNameFn"></button>

六、ref 获取组件实例

父组件Parent.vue:
<Child ref="childComp"/>
<button @click="changeName"></button>
changeName(){console.log(this.$refs.childComp.age);this.$refs.childComp.changeAge()
}
子组件Child.vue:
data(){return{age:20}
},
methods(){changeName(){this.age=15}
}

Vue中父子组件的六种通信方式相关推荐

  1. vue中父子组件先后渲染_Vue中父子组件执行的先后顺序

    前几天,朋友向我提出了一个关于Vue中父子组件执行的先后顺序问题,相信很多朋友在学习的过程中也会遇到这个问题,所以我就在此提出我自己的一些小看法. 问题如下:请问下图中父子组件执行的先后顺序? 首先, ...

  2. vue中父子组件及 watch用法

    父子组件及 watch vue中父子组件及 watch用法 - coder_zhang123456 - 博客园

  3. Vue中父子组件传值的多种方式

    vue中父子组件传值 vue中的父子组件传值,值得注意的是要遵守单向数据流原则.所谓单向数据流原则,简单的说就是父组件的数据可以传递给子组件,子组件也可以正常获取并使用由父组件传过来的数据:但是,子组 ...

  4. 通过大头儿子和小头爸爸,给女朋友讲明白了vue中父子组件的传值

    写在前面: 我是「扬帆向海」,这个昵称来源于我的名字以及女朋友的名字.我热爱技术.热爱开源.热爱编程.技术是开源的.知识是共享的. 这博客是对自己学习的一点点总结及记录,如果您对 Java.算法 感兴 ...

  5. vue中父子组件先后渲染_VUE如何实现子父组件、父子组件、兄弟组件传值

    父子组件传值: 父组件定义: 代码示例 子父组件传值: 父组件方法定义: 子组件执行父组件方法定义: methods: { closeOrOpenLeftMenu() { if (this.isLef ...

  6. 六十一、Vue中父子组件传值和组件参数校验

    @Author:Runsen @Date:2020/10/17 写在前面:我是「Runsen」,热爱技术.热爱开源.热爱编程.技术是开源的.知识是共享的.大四弃算法转前端,需要每天的日积月累,需要强大 ...

  7. vue中父子组件先后渲染_vue父子组件传值(子传父,非父子组件传值)

    1. 子组件向父组件传值 子组件: <template><div>子组件:<span>{{childValue}}</span><!-- 定义一个 ...

  8. vue中父子组件先后渲染_vue父子组件钩子函数的执行顺序

    加载渲染过程 父beforeCreate->父created->父beforeMount->子beforeCreate->子created->子beforeMount-& ...

  9. vue中父子组件通信的坑

    转自:https://www.cnblogs.com/goloving/p/8660407.html 当在一个组件中,使用了其他自定义组件时,就会利用子组件的属性和事件来和父组件进行数据交流. 父子组 ...

最新文章

  1. SAP-PM-预防性维护-01-概览
  2. 机器学习面试题集-图解准确率,精确率,召回率
  3. 【C 语言】二级指针作为输入 ( 自定义二级指针内存 | 为 二级指针 分配内存 - 存放 一维指针 | 为每个 一级指针 分配内存 | 释放二维指针内存 )
  4. Nginx-windows下nginx安装、配置与使用
  5. 如果今天完成,ESB会是什么样子?
  6. 最大子矩阵(信息学奥赛一本通-T1282)
  7. vue动态发布到线上_Vue 2.6 发布了
  8. 编译问题解决:mkdir: 无法创建目录/usr/local/share/man/man1: 文件已存在
  9. 世界地图可以无限放大_做外贸有哪些软件可以推荐?
  10. 转:计算机视觉专业词汇(中英文对照)
  11. 基于单片机程控滤波放大器增益设计-protues仿真
  12. Elsevier LaTeX 模板中参考文献没有序号,且文章引用不是序号引用
  13. (1)初探android——客户端开发学习
  14. 解决Loadrunner打开网页证书错误问题
  15. InfoPath2007中添加图片按钮
  16. 学生信息管理系统-结构体编写
  17. 跟着Nature Microbiology学作图:R语言ggplot2做散点图添加拟合曲线和p值
  18. python x 0b1010_下面代码的输出结果是
  19. 条码软件如何添加图片
  20. Qt中pro、pri文件的语法介绍

热门文章

  1. UCOSII操作系统的任务间通信
  2. 西国の海妖《花开的声音》lrc歌词
  3. 如何实现Android两个模拟器之间的通信
  4. field injection is not recommended 的解决办法
  5. Atitit 号码规范 靓号指南 attilax总结 v4 r926.docx 1. Keyword关键词 2 2. 为什么我们需要靓号指南,因为很多人手机号都是瞎选乱选,没有规范不成方圆
  6. 约束规划——拉格朗日乘数法
  7. java中实参和形参_java中形参和实参的区别
  8. mysql backlog,Linux登录时显示audit:backlog limit exceeded的解决方法
  9. 清理SYSAUX表空间的WRH$_LATCH_CHILDREN表
  10. html绝对定位怎么页面居中,css绝对定位如何居中?css绝对定位居中的四种实现方法...