Skip to content

Latest commit

 

History

History
50 lines (39 loc) · 1.31 KB

4.组件通信有哪些方式.md

File metadata and controls

50 lines (39 loc) · 1.31 KB

父组件通过props传递数据给子组件,而子组件通过emit发送事件传递数据给父组件。

通过props和emit组合的方式,使用语法糖 v-model直接实现(会解析成value和input事件)

// 父组件
  <base-checkbox v-model="lovingVue" />

  
  // 以上写法等同于
  <input :value="value" @change:value="v => value = v" />

// 子组件中
  Vue.component('base-checkbox', {
    model: {
      prop: 'checked',
      event: 'change'
    },
    props: {
      checked: Boolean
    },
    template: `
      <input
        type="checkbox"
        v-bind:checked="checked"
        v-on:change="$emit('change', $event.target.checked)"
      >
    `
  })

通过 $parent 或者 $children 对象访问组件实例的方法和数据

通过 provide / inject, 父组件通过 provide 传递数据, 子组件通过 inject 接收数据

通过 .sync, value和update的语法糖

  <!--父组件中-->
  <input :value.sync="value" />
  <!--以上写法等同于-->
  <input :value="value" @update:value="v => value = v">
  <!--子组件中-->
  <script>
    this.$emit('update:value', 1)
  </script>

通过 vuex 或者Event Bus,适用于任意组件