$emit 父子组件间通信 和 单向数据流

单向数据流

  • Vue 提倡单向数据流,即父组件通过 props 传递数据到子组件,子数据无权修改父组件的数据。目的时为了防止应用数据的流向边得混乱,难以理解。
  • 只能通过 $emit 派发一个自定义事件给父组件,由父组件来修改数据

父子组件间通信

  • 父组件通过 :data="data" 传递数据
  • 父组件通过 @fun="fun" 传递方法
// 父组件 $emitFa.vue
<template>
  <div>
    <h1>父组件数据:{{msg}}</h1>
    <emit-ch :sendData="msg" @updateInfo="updateInfo"></emit-ch>
  </div>
</template>
<script>
import emitCh from './$emitCh'
export default {
  components: { emitCh },
  data () {
    return {
      msg: '北京'
    }
  },
  methods: {
    updateInfo (data) {
       this.msg = data.city
    }
  }
}
</script>
  • 子组件通过 props 接收父组件传递的值
  • 子组件通过 $emit 调用父组件的方法并传递数据
// 子组件 $emitCh.vue
<template>
 <div>
    <h3>父组件传给子组件的数据:{{sendData}}</h3>
    <br/>
    <button @click='select()'>调用父组件的 updateInfo 方法</button>
  </div>

</template>

<script>
export default {
  props: ['sendData'],   // 接收父组件的数据
  data () {
    return {
    }
  },
  methods: {
    select () {
      let data = {
        city: '上海'
      }
      this.$emit('updateInfo', data)  // 触发父组件的 updateInfo方法
    }
  }
}
</script>
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 这篇笔记主要包含 Vue 2 不同于 Vue 1 或者特有的内容,还有我对于 Vue 1.0 印象不深的内容。关于...
    云之外阅读 5,079评论 0 29
  • 前言 您将在本文当中了解到,往网页中添加数据,从传统的dom操作过渡到数据层操作,实现同一个目标,两种不同的方式....
    itclanCoder阅读 25,905评论 1 12
  • 1、父组件可以使用 props 把数据传给子组件。 2、子组件可以使用 $emit 触发父组件的自定义事件。 vm...
    panw3i阅读 1,486评论 0 0
  • 一、了解Vue.js 1.1.1 Vue.js是什么? 简单小巧、渐进式、功能强大的技术栈 1.1.2 为什么学习...
    蔡华鹏阅读 3,377评论 0 3
  • 序:感谢朋友们耐心读完第一个故事。朋友说:情感故事无非就是初恋,相恋,三角恋!失恋,迷恋,婚外恋!人们其实都了解情...
    二昊不二阅读 181评论 0 1