美文网首页
props $emit

props $emit

作者: malgee | 来源:发表于2023-04-11 09:07 被阅读0次

在 Vue 中,组件之间的通信可以通过父子组件之间传递 props 和子组件向父组件派发事件来实现。

  • 父组件向子组件传递 (props)
<div id="app">
    <child message="hello!"></child>
</div>

<script>
// 注册
Vue.component('child', {
  // 声明 props
  props: ['message'],
  template: '<span>{{ message }}</span>'
})
// 创建根实例
new Vue({
  el: '#app'
})
</script>

把 message 这个属性通过 props 传递给了子组件 child, 在子组件中声明 props,接收传递过来的数据

注意: 子组件接收到的 props 是只读的,不能直接修改。如果需要修改这些属性,应该通过事件的方式向父组件发送消息,让父组件去修改数据。

  • 子组件通过 $emit 方法来派发事件,并通过 $on 方法在父组件中监听事件。

具体来说,子组件可以通过$emit 方法来传递自定义事件,如下所示:

// 子组件
Vue.component('child-component', {
  template: '<button @click="onClick">Click me</button>',
  methods: {
    onClick() {
      this.$emit('custom-event', 'hello, parent');
    }
  }
});

在父组件中,可以通过v-on@ 指令来监听子组件传递的事件,并在方法中处理事件数据,如下所示:

<!-- 父组件 -->
<child-component @custom-event="handleEvent"></child-component>

<script>
  export default {
    methods: {
      handleEvent(data) {
        console.log(data); // 输出:hello, parent
      }
    }
  }
</script>

需要注意的是,子组件通过 $emit 方法派发的事件只能被父组件捕获,而不能被其他祖先组件或兄弟组件捕获。如果需要在多个组件之间进行通信,可以考虑使用 Vuex事件总线等机制。

相关文章

  • Vue组建通信的几种方法

    组件通信一 —— props和$emit props和$emit 父组件 向 子组件 传递数据 用 props 子...

  • vue--三种组件中之间的传值

    一、父子组件之间的传值----props/$emit 组件之间的传值,我们比较常用到的是props/$emit 1...

  • vue组件通信

    props/$emit:(常用) 比较常见的一种。父组件通过props向子组件传递数据,子组件通过$emit向父组...

  • vue组件的使用

    props和$emit 组件间通讯和自定义事件 父子通讯 props $emit兄弟组件或者隔代组件使用自定义事件...

  • vue组件通信

    通常父子组件通信都是用props和$emit进行传递,父组件通过props传值给子组件,子组件通过$emit传值给...

  • Vue组件通讯的实现方法有哪些?

    父传子 props 子传父 $emit 非父子 varbus =newVue() // 组件A bus.$emit...

  • vue组件间通讯

    父子 $emit/on props $parent/children $attrs/listenner $ref ...

  • props和$emit

    props 父组件向子组件传值,子组件调用 $emit 子组件调用父组件中定义的方法 父组件 子组件(Transl...

  • vue 组件通信的几种种方式

    方式一 、 props[https://cn.vuejs.org/v2/api/#props] / $emit[h...

  • vue组件通信的几种方式

    1、props 2、$.emit $.on 3、$attrs, $listeners 4、provide / in...

网友评论

      本文标题:props $emit

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