美文网首页
父子组件通信

父子组件通信

作者: lyp82nkl | 来源:发表于2019-07-10 23:11 被阅读0次

组件实例的作用域是相互独立的,这就意味着不同组件之间的数据无法相互引用。

父组件向子组件传递数据

<div id="app">
    <child-component msg="你好"></child-component>    // 渲染子组件,并传递 msg
</div>

var app = new Vue({
  el: '#app',
  data: {},
  components: {    // 定义子组件
    'child-component': {
      props: ['msg'],  // 子组件使用 props 接收父组件传递的 msg
      template: `<h1>{{ msg }}</h1>`  // 4. 在 template 中使用 msg
    }
  }
})
  • 子组件使用 props 接收父组件传过来的数据;
  • props 的值可以是数组,也可以是对象
  • props 中定义的属性, 子组件可以直接使用。

使用 v-bind 绑定数据

<div id="app">
    <input type="text" v-model="text">  // input 中使用 v-model 动态绑定了父组件中的 text
    <child-component :ada="text"></child-component>  // 在子组件上绑定 dong 属性,值为父组件中的 text
</div>

var app = new Vue({
  el: '#app',
  data: {
    text: '你好'
  },
  components: {
    'child-component': {
      props: ['ada'],  // 接收 dong 属性
      template: `<h2>{{ada }}</h2>`  // 使用 dong 属性
    }
  }
})

子组件中的内容,是父组件通过使用 v-bind 传递过来的,传过来的是父组件中的 text。而父组件中的 input 又使用了 v-model 绑定了 text,所以,当改变 input 中的内容时,父组件中的 text 就会改变,text 又传递到子组件,子组件中的内容也会跟着改变。
使用 v-bind 和 不使用 v-bind 的区别:不使用 v-bind,传的是字符串;使用 v-bind,传的是什么就是什么。

子组件向父组件传递数据

    <div id="app">
        现在的余额是{{total}}
        <son-component @change="handleTotal"></son-component> 
     <!-- @change 自定义事件 -->
    </div>
<script>
    var app = new Vue({
            el: '#app',
            data: {
                total: 1000
            },
            methods: {
                handleTotal: function (value) {
                    //此处的形参 value 就是传递过来的数据
                    this.total = value;
                }
            }
        }),

        components: {
            'son-component': {
                template: `
                <div>
                  <button @click="handleincrease">+100</button>   
                  <button @click="handlereduce">-100</button>   
                </div> `,
                data: function () {
                    return {
                        count: 100
                    }
                },

                methods: {
                    handleincrease: function () {
                        this.count = this.count + 100
                        this.$emit('change', this.count)
                        //第一个参数是事件名,后边的参数是要传递的数据
                    },
                    handlereduce: function () {
                        this.count = this.count - 100
                        this.$emit('change', this.count)
                    }
                }
            }
        }
</script>
  • $emit()实现子组件向父组件通信。

  • $emit()绑定自定义事件event,当这个语句被执行到的时候,就将参数传递给父组件,父组件通过@event监听并接收参数。

相关文章

  • vue中的组件通信

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

  • 组件通信

    组件关系 组件关系可以分为父子组件通信、兄弟组件通信、跨级组件通信。 父子组件通信 1. 子组件使用 $emit(...

  • Vue如何实现组件通信?

    Vue组件通信的三种情况: 父子通信 爷孙通信 兄弟通信 父子通信:父组件使用Prop向子组件传递数据,子组件通过...

  • [Vue]组件之间如何通信?

    组件通信可以大致分为两种情况,父子组件之间的通信和非父子组件之间的通信,下面来分别介绍 一、父子组件之间的通信 1...

  • Vue入门系列(五)组件通信

    组件内通信主要分为两种:父子组件通信和子组件之间通信。 1.父子组件通信 父组件通过props属性向子组件传递数据...

  • Vue3组件化(二):非父子组件的通信、插槽Slot

    非父子组件的通信 在开发中,我们构建了组件树之后,除了父子组件之间的通信之外,还会有非父子组件之间的通信。这里我们...

  • Vue相关知识点

    1、vue父子组件之间的通信 在vue组件通信中其中最常见通信方式就是父子组件之中的通性,而父子组件的设定方式在不...

  • 12.组件化开发2-非父子组件之间通信-祖先和后代之间的通信

    在开发中,我们构建了组件树之后,除了父子组件之间的通信之外,还会有非父子组件之间的通信。非父子组件的通信又可以分为...

  • vue2中eventbus遇到的坑

    前言 vue组件非常常见的有父子组件通信,兄弟组件通信。而父子组件通信就很简单,父组件会通过 props 向下传数...

  • Vue事件总线(EventBus)使用详细介绍

    前言 vue组件非常常见的有父子组件通信,兄弟组件通信。而父子组件通信就很简单,父组件会通过 props 向下传数...

网友评论

      本文标题:父子组件通信

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