Vue component communication: using the v-on directive for event delivery

王林
Release: 2023-07-09 15:22:01
Original
1358 people have browsed it

Vue component communication: using the v-on directive for event delivery

Introduction:
In Vue development, component communication is a common requirement. Vue provides a variety of ways to implement communication between components, including using the v-on directive for event delivery. This article will introduce how to use the v-on directive to implement event communication between components, and illustrate it with code examples.

1. Introduction to the v-on directive
v-on is a directive of Vue, which is used to bind event listeners. Through the v-on directive, we can listen to DOM events in the template and execute the corresponding logic when the event is triggered.

2. Use v-on for parent-child component communication
In Vue development, there are often communication requirements between parent-child components. By using the v-on directive, the parent component can listen to the events of the child component and respond to the corresponding logic.

The following is a simple example that demonstrates communication between parent and child components:

<!-- 父组件 -->
<template>
  <div>
    <p>父组件</p>
    <child-component v-on:child-event="handleChildEvent"></child-component>
  </div>
</template>

<script>
import ChildComponent from './ChildComponent.vue';

export default {
  components: {
    ChildComponent,
  },
  methods: {
    handleChildEvent() {
      console.log('子组件事件触发');
    },
  },
};
</script>

<!-- 子组件 -->
<template>
  <div>
    <p>子组件</p>
    <button v-on:click="$emit('child-event')">触发子组件事件</button>
  </div>
</template>

<script>
export default {
};
</script>
Copy after login

In the above example, the parent component listens to the child-event of the child component through the v-on directive, When the button in the child component is clicked, this event is triggered, thereby calling the handleChildEvent method defined in the parent component. In this way, child components can pass events to parent components and implement communication between components.

3. Use v-on for sibling component communication
In addition to communication between parent and child components, there are also communication requirements between sibling components in Vue. By using the v-on directive, event delivery between sibling components can be achieved.

The following is a simple example that demonstrates communication between sibling components:

<!-- 组件A -->
<template>
  <div>
    <p>组件A</p>
    <button v-on:click="handleButtonClick">触发事件</button>
  </div>
</template>

<script>
export default {
  methods: {
    handleButtonClick() {
      this.$emit('a-event');
    },
  },
};
</script>

<!-- 组件B -->
<template>
  <div>
    <p>组件B</p>
    <p>{{ message }}</p>
  </div>
</template>

<script>
export default {
  data() {
    return {
      message: '',
    };
  },
  mounted() {
    this.$root.$on('a-event', this.handleAEvent);
  },
  methods: {
    handleAEvent() {
      this.message = '收到组件A的事件';
    },
  },
};
</script>
Copy after login

In the above example, component A listens to the click event of the button through the v-on directive, and passes this .$emit('a-event') triggers the a-event event. Component B listens to the a-event event through the this.$root.$on method in the mounted hook function, and calls the handleAEvent method when the event is triggered, thereby receiving the event and performing corresponding logical processing.

Summary:
Through the v-on instruction, we can easily and conveniently implement event transfer between Vue components. Whether it is communication between parent and child components or communication between sibling components, it can be achieved through the v-on instruction. I hope the introduction and examples in this article can help readers better understand and apply the v-on directive for component communication.

The above is the detailed content of Vue component communication: using the v-on directive for event delivery. For more information, please follow other related articles on the PHP Chinese website!

source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!