加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 建站 > 正文

Vue组件间通信六种方式(完整版)

发布时间:2019-05-18 10:34:16 所属栏目:建站 来源:浪里行舟
导读:媒介 组件是 vue.js最强盛的成果之一,而组件实例的浸染域是彼此独立的,这就意味着差异组件之间的数据无法彼此引用。一样平常来说,组件可以有以下几种相关: 如上图所示,A 和 B、B 和 C、B 和 D 都是父子相关,C 和 D 是兄弟相关,A 和 C 是隔代相关(也许隔

必要留意的是:这两种都是直接获得组件实例,行使后可以直接挪用组件的要领或会见数据。我们先来看个用 ref来会见组件的例子:

  1. // component-a 子组件 
  2. export default { 
  3.   data () { 
  4.     return { 
  5.       title: 'Vue.js' 
  6.     } 
  7.   }, 
  8.   methods: { 
  9.     sayHello () { 
  10.       window.alert('Hello'); 
  11.     } 
  12.   } 
  1. // 父组件 
  2. <template> 
  3.   <component-a ref="comA"></component-a> 
  4. </template> 
  5. <script> 
  6.   export default { 
  7.     mounted () { 
  8.       const comA = this.$refs.comA; 
  9.       console.log(comA.title);  // Vue.js 
  10.       comA.sayHello();  // 弹窗 
  11.     } 
  12.   } 
  13. </script> 

不外,这两种要领的破绽是,无法在跨级或兄弟间通讯。

  1. // parent.vue 
  2. <component-a></component-a> 
  3. <component-b></component-b> 
  4. <component-b></component-b> 

我们想在 component-a 中,会见到引用它的页面中(这里就是 parent.vue)的两个 component-b 组件,那这种环境下,就得设置特另外插件或器材了,好比 Vuex 和 Bus 的办理方案。

总结

常见行使场景可以分为三类:

  • 父子通讯:

父向子转达数据是通过 props,子向父是通过 events($emit);通过父链 / 子链也可以通讯($parent / $children);ref 也可以会见组件实例;provide / inject API;$attrs/$listeners

  • 兄弟通讯:

Bus;Vuex

  • 跨级通讯:

Bus;Vuex;provide / inject API、$attrs/$listeners

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读