


Introduction à la diffusion d'événements de composants personnalisés Vue EventBus
Cet article présente principalement la livraison d'événements de composants personnalisés Vue EventBus. La construction d'applications de composants est l'une des caractéristiques de Vue. Cet article présente principalement EventBus pour la messagerie de données.
Avant-propos
La construction d'applications basées sur des composants est l'une des caractéristiques de Vue, nous devons donc souvent encapsuler des composants personnalisés pendant le processus de développement réel de Vue pour améliorer le développement. efficacité. Dans la plupart des cas, un composant n'existe pas de manière isolée. Il interagira inévitablement avec les composants parents et les composants frères pour générer des données. Nous résumons donc ici deux manières d'interagir avec les données des composants : EventBus et l'utilisation du framework Vuex pour la gestion de l'état.
J'utiliserai deux méthodes d'interaction différentes, à savoir l'interaction de données entre les composants parent et enfant et l'interaction de données entre les composants frères et sœurs.
En raison de contraintes d'espace, cet article présente principalement EventBus pour la messagerie de données ; l'utilisation du framework Vuex pour la gestion des états sera introduite dans le prochain article.
Introduction au cas
Ce chapitre contiendra un grand nombre d'exemples de code Afin de faciliter la lecture des lecteurs, ce qui suit. des introductions de répertoires et de composants sont effectuées. Ce chapitre utilise principalement deux composants enfants et un composant parent.
Nom du fichier du composant enfant : SearchInput.vue et SearchItem.vue
Nom du fichier du composant parent : StateView.vue
Affichage de la structure du répertoire :
1. SearchInput.vue
introduction au composant. : Une zone de saisie, elle utilise la méthode onInput pour surveiller le contenu d'entrée et appelle la méthode pour transmettre les données dans la zone de saisie.
Affichage du code :
<template> <p> <input placeholder="搜索内容" v-model="searchContent"/> </p> </template> <script type="text/ecmascript-6"> export default{ data(){ return{ searchContent:"" } }, props:{ } } </script> <style lang="stylus" rel="stylesheet/stylus"> </style>
SearchItem.vue
Introduction au composant : un span, qui est principalement utilisé pour recevoir Le contenu transmis par le composant parent et le contenu transmis par la zone de saisie du composant frère sont reçus et affichés.
Exemple de code :
<template> <span class="item"> {{content}} </span> </template> <script type="text/ecmascript-6"> export default{ data(){ return{ content:this.itemContent } }, props:{ itemContent:{ type:String, required:true } } } </script> <style lang="stylus" rel="stylesheet/stylus"> .item background #f4f4f4 padding 3px 5px box-sizing border-box display inline-block cursor pointer </style>
StateView.vue
Introduction au composant : composant parent, principalement la page d'affichage et le chargement Sous-composant
Exemple de code :
<template> <p> <search-view></search-view> <p> <search-item :itemContent="content"/> <search-item itemContent="热门搜索2"/> <search-item itemContent="热门搜索3"/> </p> <p>{{content}}</p> </p> </template> <script type="text/ecmascript-6"> import searchView from '../components/SearchInput.vue' import searchItem from '../components/SearchItem.vue' export default{ data () { return { content:"接收输入框的值" } }, components: { searchView, searchItem } } </script> <style lang="stylus" rel="stylesheet/stylus"> </style>
Texte
EventBus
1. Le composant parent envoie des données au composant enfant Vous pouvez transmettre les données via les props
attributs personnalisés définis par le composant enfant
2. . EventBus en fait, cela se fait en instanciant une instance Vue, puis en envoyant des messages de données via la méthode $emit
de l'instance et en recevant des messages de données via la méthode $on
. Cela s'applique lorsqu'un composant enfant envoie un message à un composant parent ou lorsqu'un composant enfant envoie un message à un composant frère.
Jetons un coup d'œil au cas suivant, qui montre principalement :
1. Transmettez les données au composant enfant (SearchItem) via le composant parent props
( StateView);
2. Le composant enfant (SearchInput) transmet les données au composant parent (StateView) et au composant frère (SearchItem) via EventBus
Affichage de la structure du répertoire
Affichage de l'effet
Affichage du code : (le gras indique les changements )
1. Étape 1 : Personnaliser un EventBus (SearchEvent.js)
import Vue from 'Vue' export default new Vue()
créons une instance de Vue et la produisons. new
Étape 2 : Le sous-composant envoie un message de données via EventBus
<template> <p> <input placeholder="搜索内容" @input="sendEvent" v-model="searchContent"/> //增加了@input=“sendEvent”,去监听onInput事件,并回调sendEvent方法 </p> </template> <script type="text/ecmascript-6"> import searchEvent from '../event/SearchEvent' //导入EventBus export default{ data(){ return{ searchContent:"" } }, methods:{ sendEvent:function(){ //定义sendEvent方法,在input中监听onInput,并回调该方法 /** * 通过导入的searchEvent调用$emit方法去发送数据消息。 * 第一个参数为事件名,到时候我们要通过该事件名去接收数 * 第二个参数为数据值,如果只有一个参数,我们可以直接传递该参数 * 如果有两个及以上的参数,我们可以通过对象的形式去传递。 */ searchEvent.$emit("search",this.searchContent) //多个参数传递的示例: //searchEvent.$emit("search",{"content":this.searchContent,"valTwo":"valTow"}) } }, props:{ } } </script> <style lang="stylus" rel="stylesheet/stylus"> </style>
pour surveiller l'événement @input="sendEvent"
, et lorsqu'il s'avère que le contenu de la zone de saisie a changé, rappelez la méthode onInput
et appelez la méthode sendEvent
. Le message de données est envoyé EventBus.emit()
La troisième étape est que le composant parent (StateView) et le composant enfant (SearchItem) reçoivent le message de données
StateView.vue
<template> <p> <search-view></search-view> <p> <search-item :itemContent="content"/> //通过props去为子组件传递(动态数据:content)数据 <search-item itemContent="热门搜索2"/> //通过props去为子组件传递(固定数据:热门搜索2)数据 <search-item itemContent="热门搜索3"/> </p> <p>{{content}}</p> </p> </template> <script type="text/ecmascript-6"> import searchView from '../components/SearchInput.vue' import searchItem from '../components/SearchItem.vue' import searchEvent from '../event/SearchEvent' //导入EventBus export default{ data () { return { content:"接收输入框的值" } }, mounted(){ /** * 在mounted接受数据消息,$on接受两个参数。 * 第一个参数是消息事件名,应该与发送数据消息的第一个参数相同,否则接收不到数据消息 * 第二个参数是一个函数,对数据消息事件做处理;该函数带一个参数,则是数据。 */ searchEvent.$on('search',(val)=>{ this.content=val; //示例:如果数据传递的是对象形式 // this.content=val.content; }) }, components: { searchView, searchItem } } </script> <style lang="stylus" rel="stylesheet/stylus"> </style>
de SearchItem. props
dans le cycle de vie du composant mounted
, et modifiez la valeur du contenu EventBus.on()
<template> <span class="item"> {{content}} </span> </template> <script type="text/ecmascript-6"> import searchEvent from '../event/SearchEvent' //导入EventBus export default{ data(){ return{ content:this.itemContent } }, props:{ itemContent:{ type:String, required:true } }, mounted(){ /** * 在mounted接受数据消息,$on接受两个参数。 * 第一个参数是消息事件名,应该与发送数据消息的第一个参数相同,否则接收不到数据消息 * 第二个参数是一个函数,对数据消息事件做处理;该函数带一个参数,则是数据。 */ searchEvent.$on('search',(val)=>{ this.content=val; }) } } </script> <style lang="stylus" rel="stylesheet/stylus"> .item background #f4f4f4 padding 3px 5px box-sizing border-box display inline-block cursor pointer </style>
dans le cycle de vie du composant mounted
Pour recevoir le message de données du sous-composant (SearchInput) et modifier la valeur du contenu. EventBus.on()
recevront le message de données search
Revue :
1. Le composant parent peut transmettre des données au composant enfant via props
.
2. Lorsqu'un composant enfant transmet un message à un composant parent ou qu'un composant enfant transmet un message à un composant frère, vous pouvez utiliser EventBus pour instancier une Vue et transmettre les $emit
et $on
. méthodes de l’instance et Réception des messages de données.
3. Une fois le message de données envoyé, tous les lieux enregistrés pour recevoir le message de données recevront le message de données.
Ce qui précède représente l'intégralité du contenu de cet article. J'espère qu'il sera utile à l'étude de chacun. Pour plus de contenu connexe, veuillez faire attention au site Web PHP chinois !
Recommandations associées :
À propos de la mise en œuvre du framework de commentaires Vue (implémentation du composant parent)
Retour à la mise en œuvre de Vue top backToTop Composants
Introduction à l'utilisation du composant de sélection de région VUE (V-Distpicker)
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Vous pouvez ajouter une fonction au bouton VUE en liant le bouton dans le modèle HTML à une méthode. Définissez la logique de la fonction de méthode et d'écriture dans l'instance Vue.

L'utilisation de bootstrap dans vue.js est divisée en cinq étapes: installer bootstrap. Importer un bootstrap dans main.js. Utilisez le composant bootstrap directement dans le modèle. Facultatif: style personnalisé. Facultatif: utilisez des plug-ins.

L'option Watch dans Vue.js permet aux développeurs d'écouter des modifications de données spécifiques. Lorsque les données changent, regardez déclenche une fonction de rappel pour effectuer des vues de mise à jour ou d'autres tâches. Ses options de configuration incluent immédiatement, qui spécifie s'il faut exécuter un rappel immédiatement, et profond, ce qui spécifie s'il faut écouter récursivement les modifications des objets ou des tableaux.

Il existe trois façons de se référer aux fichiers JS dans Vue.js: spécifiez directement le chemin à l'aide du & lt; script & gt; étiqueter;; importation dynamique à l'aide du crochet de cycle de vie monté (); et l'importation via la bibliothèque de gestion de l'État Vuex.

Le développement multi-pages VUE est un moyen de créer des applications à l'aide du cadre Vue.js, où l'application est divisée en pages distinctes: Maintenance du code: La division de l'application en plusieurs pages peut rendre le code plus facile à gérer et à maintenir. Modularité: chaque page peut être utilisée comme module séparé pour une réutilisation et un remplacement faciles. Routage simple: la navigation entre les pages peut être gérée par une configuration de routage simple. Optimisation du référencement: chaque page a sa propre URL, ce qui aide le référencement.

Vous pouvez interroger la version Vue en utilisant Vue Devtools pour afficher l'onglet Vue dans la console du navigateur. Utilisez NPM pour exécuter la commande "NPM List -g Vue". Recherchez l'élément VUE dans l'objet "dépendances" du fichier package.json. Pour les projets Vue CLI, exécutez la commande "Vue --version". Vérifiez les informations de la version dans le & lt; script & gt; Tag dans le fichier html qui fait référence au fichier VUE.

Vue.js dispose de quatre méthodes pour revenir à la page précédente: $ router.go (-1) $ router.back () utilise & lt; router-link to = & quot; / & quot; Composant Window.History.back (), et la sélection de la méthode dépend de la scène.

L'interception de la fonction dans Vue est une technique utilisée pour limiter le nombre de fois qu'une fonction est appelée dans une période de temps spécifiée et prévenir les problèmes de performance. La méthode d'implémentation est: Importer la bibliothèque Lodash: import {Debounce} de 'Lodash'; Utilisez la fonction Debounce pour créer une fonction d'interception: const debouncedFunction = Debounce (() = & gt; {/ logical /}, 500); Appelez la fonction d'interception et la fonction de contrôle est appelée au plus une fois en 500 millisecondes.
