组件是vue.js最强大的功能之一,但组件之间的作用域是相互独立的,这就意味着不同组件之间的数据是无法相互引用的。为实现组件之间的通信,vue为我们提供了三种方式:prop、ref、emit。

首先创建两个组件,分别作为父组件和子组件,父组件在自己内部import引入子组件,并在components属性中注册,然后子组件就可以用标签的形式嵌进父组件了。

通信:
1.通过prop实现通信
子组件的props选项能够接收来自父组件的数据;只能接收,props是单向绑定的,只能父组件向子组件传递,不能反过来。且传递的方式也有两种:
(1)静态传递
子组件通过props选项来声明一个自定义的属性,然后父组件就可以在嵌套标签的时候,通过这个属性往子组件传递数据了。
父组件:

子组件:


(2)动态传递
我们已经知道了可以像上面那样给 props 传入一个静态的值,但是我们更多的情况需要动态的数据。这时候就可以用 v-bind 来实现。通过v-bind绑定props的自定义的属性,传递去过的就不是静态的字符串了,它可以是一个表达式、布尔值、对象等等任何类型的值;当它发生变化时,传递过去的数据也会相应改变。
父组件:


子组件和上面静态传递时一样

2.通过ref实现通信
ref的官方解释是:ref是被用来给元素或子组件注册引用信息的。引用信息又将会注册在父组件的ref对象上。
解释一下:
如果ref用在子组件上,指向的是组件实例,可以理解为对子组件的索引,通过ref可能获取到子组件中定义的属性和方法。
若在普通的DOM元素上使用ref,引用指向的就是DOM元素,通过ref就可能获取到该DOM的属性集合,轻松访问到DOM元素,作用与JQ选择器类似。
父组件:


子组件:


prop和$ref之间的区别:
prop 着重于数据的传递,它并不能调用子组件里的属性和方法。像创建文章组件时,自定义标题和内容这样的使用场景,最适合使用prop。
$ref 着重于索引,主要用来调用子组件里的属性和方法,其实并不擅长数据传递。而且ref用在dom元素的时候,能使到选择器的作用,这个功能比作为索引更常有用到。

3.通过emit实现通信
上面两种方式都是父组件向子组件通信,而emit是子组件向父组件通信。
对于emit的理解:
vm.$emit( event, arg );
$emit 绑定一个自定义事件event,当这个这个语句被执行到的时候,就会将参数arg传递给父组件,父组件通过@event监听并接收参数。
父组件:

父组件data中:title: ‘’

子组件:

Vue父子组件间通信相关推荐

  1. 【Vue父子组件间通信】

    Vue父子组件间通信 父子组件通信 父传子 (props) 子传父 (自定义事件) 完整代码 效果 父子组件通信 父传子 (props) (1)在父组件中使用子组件时,给子组件一个自定义属性,这个属性 ...

  2. vue 父子组件间通信

    前言 在vue项目中,封装组件,涉及到父子组件的传值,本文主要讲解父子组件之间传值的方法. 一.props / $emit 适用于父子组件通信,单向数据流,这种方法是 vue 组件的基础. 二.ref ...

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

    Vue中组件间通信的方式 Vue中组件间通信包括父子组件.兄弟组件.跨级组件.非嵌套组件之间通信. props $emit props $emit适用于父子组件的通信,这种组件通信的方式是我们运用的非 ...

  4. Vue实现组件间通信的七种方式

    1. props / $emit 父组件通过props的方式向子组件传递数据,而通过$emit 子组件可以向父组件通信: 父传子:父组件通过import引入子组件,并注册,在子组件标签上添加要传递的属 ...

  5. vue中组件间通信的6种方式

    前言 组件是 vue.js最强大的功能之一,而组件实例的作用域是相互独立的,这就意味着不同组件之间的数据无法相互进行直接的引用,所以组件间的相互通信是非常重要的. 除了使用vuex外还有下面6种组件间 ...

  6. vue -- watch侦听器与父子组件间通信

    watch侦听器 方式一 1.默认有两个参数 newValue与oldValue 2.如果是对象类型那么拿到的是代理对象 如果要进行深度监听 需要加上 deep : true 如果想要第一次渲染直接执 ...

  7. Vue 父子组件间的通信

    前言 在 Vue 项目中父子组件的通信是非常常见的,最近做项目的时候发现对这方面的知识还不怎么熟练,在这边做一下笔记,系统学习一下吧. 1 父组件传值给子组件 1.1 传值写法 父组件传值给子组件,这 ...

  8. Vue2.0入门系列——父子组件间通信

    1.子组件更新,父组件不变 点击"按钮"按钮,子组件数据被修改,父组件数据不变  =========>>>>>>  项目源代码, <hea ...

  9. Vue父子组件互相通信实例

    组件实例之间的作用域是独立的,意味了不应该在子组件的模板内直接引用父组件的数据,但是父子组件之间需要通信:父组件要给子组件传递数据,子组件需要将它内部发生的事情告知给父组件. prop 是父组件用来传 ...

最新文章

  1. java和c++的区别大吗_安徽成人高考和自考区别大吗?为什么推荐选成人高考?
  2. 汇编实验:屏幕窗口程序(代码有较为详细的注释)
  3. Oracle技术之和分区表相关的一点总结(四)
  4. CentOS 使用 Docker 安装 Sentry
  5. Python自动化测试框架有哪些?
  6. [八省联考2018]劈配 (匈牙利)
  7. 火狐怎么在线升级 火狐浏览器在线升级方法分享
  8. C++设计模式-备忘录模式
  9. 使用 django middleware 和 celery 隔离业务系统和积分系统的尝试
  10. 微软ODBC服务器驱动,Microsoft ODBC 驱动程序的功能 - ODBC Driver for SQL Server | Microsoft Docs...
  11. 一根网线两台电脑传输文件
  12. 如何选择字体(font-family)
  13. 震撼您心灵的四川雪山
  14. 为何excel中数据无法计算机,电脑中excel表格内容无法复制的解决方法
  15. 如何禁用C-State功能?关闭intel CPU的C-State省电模式方法
  16. 软考系统架构设计师论文真题汇总(2015-2017)
  17. python_pandas入门(by offical document/reference)/loc和iloc操作/dataframe插入操作/pandas读取无表头的文件/查找某一列是否有某个值
  18. VS2010启动后鼠标失灵解决方法
  19. 爱因斯坦说过的名言,我的一些理解(一)
  20. Pandoc中的Markdown语法

热门文章

  1. thinkphp上一篇下一篇功能
  2. 记录自己的中文核心投稿经历
  3. dijstra + 链式前向星 一个人的旅行 HDU - 2066
  4. 一加和华为买哪个好?一加9pro用实力告诉你
  5. 人工智能涉及哪些方面 选择Python入门怎么样
  6. php领导手写字迹,央视名嘴董倩的手写体感谢信曝光,字迹潇洒飘逸,颠覆你的审美...
  7. CSS——CSS常用的字体样式
  8. 去掉linux内核打印信息的一种方法
  9. python素数算法,Python中的AKS素数算法
  10. Kubernetes pod ephemeral-storage配置