Usage and common scenarios of Vue custom events
Usage and common scenarios of Vue custom events
Vue.js is a popular JavaScript framework for building user interfaces. In Vue, we can implement communication between components through custom events. Custom events are one of the very useful features in Vue, allowing us to pass data between different components and trigger specific behaviors. This article will introduce the usage and common scenarios of custom events in Vue, and provide specific code examples.
1. Basic usage of custom events
In Vue, we can use the $emit method to trigger custom events. The $emit method receives two parameters. The first parameter is the name of the event to be triggered, and the second parameter is the data to be passed. Components that receive custom events need to use the v-on directive to listen for events and execute related logic when the event is triggered.
The following is a simple example that demonstrates how to trigger a custom event in the parent component and receive and handle the event in the child component:
<!-- 父组件 --> <template> <div> <button @click="triggerEvent">触发事件</button> <child-component @custom-event="handleEvent"></child-component> </div> </template> <script> import ChildComponent from './ChildComponent.vue'; export default { components: { ChildComponent }, methods: { triggerEvent() { this.$emit('custom-event', 'Hello, world!'); }, handleEvent(data) { console.log(data); // 输出:Hello, world! } } } </script> <!-- 子组件 --> <template> <div> <h1 id="子组件">子组件</h1> </div> </template> <script> export default { mounted() { this.$emit('custom-event', 'Hello, world!'); } } </script>
In the above example, when " When the event button is triggered, the parent component triggers the custom event and passes the string "Hello, world!" as data. The subcomponent listens to custom events through the v-on directive and prints out the received data in the handleEvent method.
2. Common scenarios of custom events
- Communication between parent and child components
Custom events transfer data and implementation between parent and child components Communication is very convenient. The parent component can pass data to the child component through custom events, and listen to the custom events triggered by the child component to obtain the child component's data.
- Communication between sibling components
If two components do not have a parent-child relationship, but need to communicate, you can use Vue's event bus to achieve it. An event bus is an empty Vue instance used to share events between different components. Custom events can be triggered and received between different components through the $emit and $vnode.$on methods.
Here is an example that demonstrates how to use the event bus to communicate between sibling components:
<!-- 组件A --> <template> <div> <button @click="triggerEvent">触发事件</button> </div> </template> <script> import eventBus from './eventBus'; export default { methods: { triggerEvent() { eventBus.$emit('custom-event', 'Hello, world!'); } } } </script> <!-- 组件B --> <template> <div> <h1 id="组件B">组件B</h1> </div> </template> <script> import eventBus from './eventBus'; export default { mounted() { eventBus.$on('custom-event', data => { console.log(data); // 输出:Hello, world! }) } } </script> <!-- eventBus.js --> import Vue from 'vue'; const eventBus = new Vue(); export default eventBus;
In the above example, component A triggered a custom event through the event bus, and Data was passed. Component B listens to custom events through the event bus and obtains data in the callback function.
- Communication between cross-level components
Vue provides provide/inject API to achieve communication between cross-level components. By using provide in the parent component to provide data, and using inject in the descendant component to inject data, communication between components at any level is achieved.
The following is an example that demonstrates how to use provide and inject to achieve communication between cross-level components:
<!-- 父组件 --> <template> <div> <p>父组件提供的数据:{{ data }}</p> <grand-child-component></grand-child-component> </div> </template> <script> export default { provide() { return { data: 'Hello, world!' } } } </script> <!-- 子组件 --> <template> <div> <p>子组件注入的数据:{{ injectedData }}</p> <child-component></child-component> </div> </template> <script> export default { inject: ['data'], computed: { injectedData() { return this.data; } } } </script> <!-- 孙子组件 --> <template> <div> <p>孙子组件注入的数据:{{ injectedData }}</p> </div> </template> <script> export default { inject: ['data'], computed: { injectedData() { return this.data; } } } </script>
In the above example, the parent component provides the data "Hello" through provide , world!", child components and grandchild components have data injected through inject respectively and used in the template.
Summary
Custom events are a very useful feature in Vue, which can easily achieve communication between components. In Vue, we can use the $emit method to trigger custom events and listen for events through the v-on directive. Custom events are suitable for communication between parent-child components, sibling components, and cross-level components. I hope that the large number of sample codes provided in this article can help you better understand the usage and common scenarios of custom events in Vue.
The above is the detailed content of Usage and common scenarios of Vue custom events. For more information, please follow other related articles on the PHP Chinese website!

Vue.js is a progressive JavaScript framework released by You Yuxi in 2014 to build a user interface. Its core advantages include: 1. Responsive data binding, automatic update view of data changes; 2. Component development, the UI can be split into independent and reusable components.

Netflix uses React as its front-end framework. 1) React's componentized development model and strong ecosystem are the main reasons why Netflix chose it. 2) Through componentization, Netflix splits complex interfaces into manageable chunks such as video players, recommendation lists and user comments. 3) React's virtual DOM and component life cycle optimizes rendering efficiency and user interaction management.

Netflix's choice in front-end technology mainly focuses on three aspects: performance optimization, scalability and user experience. 1. Performance optimization: Netflix chose React as the main framework and developed tools such as SpeedCurve and Boomerang to monitor and optimize the user experience. 2. Scalability: They adopt a micro front-end architecture, splitting applications into independent modules, improving development efficiency and system scalability. 3. User experience: Netflix uses the Material-UI component library to continuously optimize the interface through A/B testing and user feedback to ensure consistency and aesthetics.

Netflixusesacustomframeworkcalled"Gibbon"builtonReact,notReactorVuedirectly.1)TeamExperience:Choosebasedonfamiliarity.2)ProjectComplexity:Vueforsimplerprojects,Reactforcomplexones.3)CustomizationNeeds:Reactoffersmoreflexibility.4)Ecosystema

Netflix mainly considers performance, scalability, development efficiency, ecosystem, technical debt and maintenance costs in framework selection. 1. Performance and scalability: Java and SpringBoot are selected to efficiently process massive data and high concurrent requests. 2. Development efficiency and ecosystem: Use React to improve front-end development efficiency and utilize its rich ecosystem. 3. Technical debt and maintenance costs: Choose Node.js to build microservices to reduce maintenance costs and technical debt.

Netflix mainly uses React as the front-end framework, supplemented by Vue for specific functions. 1) React's componentization and virtual DOM improve the performance and development efficiency of Netflix applications. 2) Vue is used in Netflix's internal tools and small projects, and its flexibility and ease of use are key.

Vue.js is a progressive JavaScript framework suitable for building complex user interfaces. 1) Its core concepts include responsive data, componentization and virtual DOM. 2) In practical applications, it can be demonstrated by building Todo applications and integrating VueRouter. 3) When debugging, it is recommended to use VueDevtools and console.log. 4) Performance optimization can be achieved through v-if/v-show, list rendering optimization, asynchronous loading of components, etc.

Vue.js is suitable for small to medium-sized projects, while React is more suitable for large and complex applications. 1. Vue.js' responsive system automatically updates the DOM through dependency tracking, making it easy to manage data changes. 2.React adopts a one-way data flow, and data flows from the parent component to the child component, providing a clear data flow and an easy-to-debug structure.


Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

AI Hentai Generator
Generate AI Hentai for free.

Hot Article

Hot Tools

Safe Exam Browser
Safe Exam Browser is a secure browser environment for taking online exams securely. This software turns any computer into a secure workstation. It controls access to any utility and prevents students from using unauthorized resources.

Notepad++7.3.1
Easy-to-use and free code editor

MinGW - Minimalist GNU for Windows
This project is in the process of being migrated to osdn.net/projects/mingw, you can continue to follow us there. MinGW: A native Windows port of the GNU Compiler Collection (GCC), freely distributable import libraries and header files for building native Windows applications; includes extensions to the MSVC runtime to support C99 functionality. All MinGW software can run on 64-bit Windows platforms.

DVWA
Damn Vulnerable Web App (DVWA) is a PHP/MySQL web application that is very vulnerable. Its main goals are to be an aid for security professionals to test their skills and tools in a legal environment, to help web developers better understand the process of securing web applications, and to help teachers/students teach/learn in a classroom environment Web application security. The goal of DVWA is to practice some of the most common web vulnerabilities through a simple and straightforward interface, with varying degrees of difficulty. Please note that this software

PhpStorm Mac version
The latest (2018.2.1) professional PHP integrated development tool