I have been studying the source code of Vue recently and summarized several methods of transferring data between parent and child components in Vue. 1. props & eventsThe parent component passes props data to the child component, and the child component returns data to the parent component by triggering events. The code is as follows: //Subcomponent <template> <div @click="changeName('YYY')">{{name}}</div> </template> <script> export default{ props:['name'], //or props:{name:{type:String,default:''}} methods:{ //You cannot modify props data in child components, you should trigger an event for the parent component to handle changeName(newName){ this.$emit('changeName',newName) } } } </script> //Parent component <template> <div> <child-comp :name="name" @changeName="changeName"></child-comp> </div> </template> <script> import childComp from 'path' export default{ data(){ return {name:'XXX'} }, components:{ childComp }, methods:{ changeName(newName){ this.name = newName; } } } </script> The above is a complete process. The parent component passes data to the child component through props, and the child component triggers the event, which is listened by the parent component and processed accordingly. 2.refThe ref attribute can be defined on a child component or native DOM. If it is on a child component, it points to the child component instance. If it is on the native DOM, it points to the native DOM element (which can be used for element selection, eliminating the trouble of querySelector). The idea of passing data is: get the child component instance through ref in the parent component, then call the child component method and pass the relevant data as parameters. The code is as follows: //Subcomponent <template> <div>{{parentMsg}}</div> </template> <script> export default{ data(){ return { parentMsg:'' } }, methods:{ getMsg(msg){ this.parentMsg = msg; } } } </script> //Parent component <template> <div> <child-comp ref="child"></child-comp> <button @click="sendMsg">SEND MESSAGE</button> </div> </template> <script> import childComp from 'path' export default{ components:{ childComp }, methods:{ sendMsg(){ this.$refs.child.getMsg('Parent Message'); } } } </script> 3. provide & inject are not officially recommended for use in production environmentsProvide means to provide. When a component provides a data through provide, its descendant components can use inject to accept the injection, so that they can use the data passed by the ancestor component. The code is as follows: //child <template> <div>{{appName}}</div> </template> <script> export default{ inject:['appName'] } </script> //root export default{ data(){ return { appName:'Test' } }, provide:['appName'] } 4.vuexVue's officially recommended global state management plug-in. No details. This concludes this article about several methods of passing data from parent components to child components in Vue. For more information about passing data from parent components to child components in Vue, please search for previous articles on 123WORDPRESS.COM or continue to browse the following related articles. I hope you will support 123WORDPRESS.COM in the future! You may also be interested in:
|
<<: Install MySQL 5.7 on Ubuntu 18.04
>>: Detailed explanation of the pitfalls of MySQL 8.0
Table of contents Preface Ajax serial and paralle...
During the installation of Ubuntu 18, the mmx64.e...
<br />A great blog post by PPK two years ago...
Implementing responsive layout with CSS Responsiv...
Table of contents What to do when registering an ...
After installing the latest version 8.0.11 of mys...
Using the CSS3 border-image property, you can set...
1. Download VMware Workstation 64 version https:/...
Preface In fact, I have never encountered this ki...
Recently, we need to perform a scheduled migratio...
The MySQL version used in this example is mysql-8...
In previous blog posts, I have been focusing on so...
Table of contents What is the Linux system that w...
First, we need to use the transform-origin attrib...
title: vue uses vue-meta-info to set the title an...