美文网首页
vue2 组件通信

vue2 组件通信

作者: overflow_hidden | 来源:发表于2017-05-05 09:12 被阅读61次

1. 父子组件通信

尽管我们可以使用
1️⃣this.$parent访问父组件实例
2️⃣this.$children访问所有的子组件实例
3️⃣this.$root组件所在的根实例

但这在vue中是不建议直接子组件操作父组件的数据的,或者父组件操作子组件的参数。

  • 父传子: 通过props
  • 子传父:这时候我们可以通过触发事件来通知父组件改变数据,从而达到改变子组件数据的目的。
官网通信说明图

父组件代码

 //parent.html子组件的引入 
<v-test :title="testTitle" @changeTitle="changes"></v-test>
////监听子组件触发的changeTitle事件,然后调用changes方法
//parent.vue
import test from XXX;
export default {
    components: {
       vTest: test
    },
    data (){
        return {
            testTitle: "我是子组件标题名称"
        }
    },
  methods: {
      changes (msg) {
          this.testTitle = msg;
      }
  }
}

子组件代码

child.html
<template>
<div>  {{title}}</div>
<button @click="changeInfo"></button>
</template>


 export default {
    props: {
        title: {
          default: ""
        }
    },
    
  methods: {
      changeInfo () {
        ////主动触发changeTitle方法,'hehe'为向父组件传递的数据
         this.$emit("changeTitle","我是新的title");
      }
  }
}

2. 兄弟组件通信

如果2个组件不是父子组件那么如何通信呢?这时可以通过eventHub来实现通信。
所谓eventHub就是创建一个事件中心,相当于中转站,可以用它来传递事件和接收事件。

let bus = new Vue(); //创建事件中心
// 触发组件 A 中的事件
bus.$emit('id-selected', 1)
// 在组件 B 创建的钩子中监听事件
bus.$on('id-selected', function (id) {
  // ...
})

如果业务涉及很多的组件通信,推荐使用Vuex

什么情况下我应该使用 Vuex?
虽然 Vuex 可以帮助我们管理共享状态,但也附带了更多的概念和框架。这需要对短期和长期效益进行权衡。
如果您不打算开发大型单页应用,使用 Vuex 可能是繁琐冗余的。确实是如此——如果您的应用够简单,您最好不要使用 Vuex。一个简单的 global event bus 就足够您所需了。但是,如果您需要构建是一个中大型单页应用,您很可能会考虑如何更好地在组件外部管理状态,Vuex 将会成为自然而然的选择。

相关文章

  • vue父子组件实现双向绑定实例

    Vue2的组件props通信方式 Vue2中组件props的数据流动改变只能单向流动,即只能由组件外通过DOM属性...

  • vue2 组件通信

    1. 父子组件通信 尽管我们可以使用1️⃣this.$parent访问父组件实例2️⃣this.$children...

  • vue文档集合

    Vue2使用笔记3--父子组件的通信Vue 2.0开发实践(组件间通讯)Event Bus 在Vue中的使用vue...

  • vue2父子组件通信

    前言 因为vue2去除了父子组件的双向数据绑定,所以在子组件是不允许修改父组件的属性的,控制台会报如下错误: 解决...

  • provide inject在vue2和vue3中的使用

    vue2父组件 vue2子组件 vue3父组件 vue3子组件 vue3官方详细使用provide inject地...

  • vue2 父子组件通信问题

    知识点: 1、父组件使用props 把数据传给子组件。 2、子组件使用 $emit 触发父组件的自定义事件。 de...

  • vue2 父子组件之间通信

    1.父组件与子组件通信 父组件: 子组件:(子组件用props接收数据) 格式1 格式2 格式3 2.子组件与父组...

  • Vue2 组件通信写法总结

    组件通讯包括:父子组件间的通信和兄弟组件间的通信。具体有以下几种情况。 父组件传递数据给子组件 父组件使用 Pro...

  • vue中的组件通信

    一、组件通信(组件传值) 1.1父子组件通信 1.2子父组件通信 1.3非父子组件通信(兄弟组件通信)

  • 组件通信

    组件通信分为几种: 父组件给子组件通信 子组件给父组件通信 兄弟组件通信 1.父组件给子组件通信 法一...

网友评论

      本文标题:vue2 组件通信

      本文链接:https://www.haomeiwen.com/subject/eotdtxtx.html