In Vue, components are an important part of building a user interface. They can easily decompose the interface into smaller and reusable parts. Since a page may contain multiple components, communication between components becomes important. Especially the communication between parent and child components.
Vue implements communication between parent and child components through props and $emit. This article will introduce you to both methods.
1. Props
Props are the way parent components in Vue pass data to child components. props is an array that stores data attributes to be passed to child components. In the child component, use props to receive data passed from the parent component.
Use of props: First, define props in the parent component. The code is as follows:
<template> <child :message="parentMsg"/> </template> <script> import Child from "./Child.vue"; export default { data() { return { parentMsg: "父组件的数据", }; }, components: { Child, }, props: ["parentMsg"], //在父组件中定义props }; </script>
In the above code, the parent component passes a message named message to the child component through props. properties.
Then, receive props in the child component:
<template> <h2 id="message">{{ message }}</h2> </template> <script> export default { props: { message: { type: String, required: true, //props接收的属性必须有值 }, }, }; </script>
In the child component, the message attribute passed by the parent component is received through props.
At this time, the value "parent component data" will be displayed on the parent component's page.
2. $emit
$emit is the way for sub-components in Vue to transmit messages to parent components. When certain events occur in a child component, the event method of the parent component can be triggered through $emit. The first parameter of the $emit method is the name of the event to be triggered, and the second parameter is the parameter to be passed to the parent component.
Usage of $emit: First, define an event method in the child component. When an event is triggered, call the $emit method to pass the message to the parent component. The code is as follows:
<template> <button @click="onClick">点击传递消息到父组件</button> </template> <script> export default { methods: { onClick() { this.$emit("child-msg", "子组件的数据"); }, }, }; </script>
In the above code, the child component defines the onClick event method. When the button is clicked, the event named child-msg will be triggered through the $emit method and the "child component data" parameter will be passed.
Then, listen to this event in the parent component:
<template> <div> <div>{{ message }}</div> <child @child-msg="getChildMsg"></child> </div> </template> <script> import Child from "./Child.vue"; export default { data() { return { message: "", }; }, components: { Child, }, methods: { getChildMsg(msg) { this.message = msg; //监听子组件的事件,获取传递过来的参数 }, }, }; </script>
In the above code, the parent component uses the @ symbol to listen to the event of the child component. Once the child component triggers the child-msg event, the parent component responds to the event and receives the data passed by the child component through the getChildMsg method, and then displays the data on the page.
Through the above two methods, communication between parent and child components can be achieved in Vue. The code is concise, easy to understand and easy to maintain, which can improve the efficiency of component development.
The above is the detailed content of How to implement communication between parent and child components in Vue?. For more information, please follow other related articles on the PHP Chinese website!

vue中props可以传递函数;vue中可以将字符串、数组、数字和对象作为props传递,props主要用于组件的传值,目的为了接收外面传过来的数据,语法为“export default {methods: {myFunction() {// ...}}};”。

本篇文章带大家聊聊vue指令中的修饰符,对比一下vue中的指令修饰符和dom事件中的event对象,介绍一下常用的事件修饰符,希望对大家有所帮助!

如何覆盖组件库样式?下面本篇文章给大家介绍一下React和Vue项目中优雅地覆盖组件库样式的方法,希望对大家有所帮助!

react与vue的虚拟dom没有区别;react和vue的虚拟dom都是用js对象来模拟真实DOM,用虚拟DOM的diff来最小化更新真实DOM,可以减小不必要的性能损耗,按颗粒度分为不同的类型比较同层级dom节点,进行增、删、移的操作。


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

SublimeText3 Chinese version
Chinese version, very easy to use

SublimeText3 English version
Recommended: Win version, supports code prompts!

MantisBT
Mantis is an easy-to-deploy web-based defect tracking tool designed to aid in product defect tracking. It requires PHP, MySQL and a web server. Check out our demo and hosting services.

Dreamweaver CS6
Visual web development tools

WebStorm Mac version
Useful JavaScript development tools