Maison interface Web js tutoriel Introduction à la diffusion d'événements de composants personnalisés Vue EventBus

Introduction à la diffusion d'événements de composants personnalisés Vue EventBus

Jun 30, 2018 pm 04:40 PM
eventbus vue

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>
Copier après la connexion

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>
Copier après la connexion

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 &#39;../components/SearchInput.vue&#39;
import searchItem from &#39;../components/SearchItem.vue&#39;

export default{
 data () {
 return {
  content:"接收输入框的值"
 }
 },
 components: {
 searchView,
 searchItem
 }
}

</script>

<style lang="stylus" rel="stylesheet/stylus">

</style>
Copier après la connexion

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 &#39;Vue&#39;
export default new Vue()
Copier après la connexion

Ici, nous

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 &#39;../event/SearchEvent&#39;  //导入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>
Copier après la connexion

Dans l'exemple ci-dessus, nous avons principalement fait le choses suivantes : 1. Importer EventBus

2. Utilisez

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 &#39;../components/SearchInput.vue&#39;
import searchItem from &#39;../components/SearchItem.vue&#39;
import searchEvent from &#39;../event/SearchEvent&#39; //导入EventBus
export default{
 data () {
 return {
  content:"接收输入框的值"
 }
 },
 mounted(){
 /**
  * 在mounted接受数据消息,$on接受两个参数。
  * 第一个参数是消息事件名,应该与发送数据消息的第一个参数相同,否则接收不到数据消息
  * 第二个参数是一个函数,对数据消息事件做处理;该函数带一个参数,则是数据。
  */
 searchEvent.$on(&#39;search&#39;,(val)=>{
  this.content=val;
  //示例:如果数据传递的是对象形式
  // this.content=val.content;
 })
 },
 components: {
 searchView,
 searchItem
 }
}

</script>

<style lang="stylus" rel="stylesheet/stylus">

</style>
Copier après la connexion

Dans l'exemple ci-dessus, nous avons principalement fait les choses suivantes :

1. , nous avons transmis les données via

de SearchItem. props

2. Recevez le message de données du sous-composant (SearchInput) en appelant la méthode

dans le cycle de vie du composant mounted, et modifiez la valeur du contenu EventBus.on()

SearchItem.vue

<template>
 <span class="item">
  {{content}}
 </span>
</template>

<script type="text/ecmascript-6">
 import searchEvent from &#39;../event/SearchEvent&#39; //导入EventBus
 export default{
 data(){
  return{
  content:this.itemContent
  }
 },
 props:{
  itemContent:{
  type:String,
  required:true
  }
 },
 mounted(){
 /**
  * 在mounted接受数据消息,$on接受两个参数。
  * 第一个参数是消息事件名,应该与发送数据消息的第一个参数相同,否则接收不到数据消息
  * 第二个参数是一个函数,对数据消息事件做处理;该函数带一个参数,则是数据。
  */
  searchEvent.$on(&#39;search&#39;,(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>
Copier après la connexion

Dans l'exemple ci-dessus, nous faisons principalement une chose :

En appelant la méthode

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()

On sent que dès que SearchInput envoie un message de données, tous les lieux inscrits pour recevoir l'événement

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!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
Will R.E.P.O. Vous avez un jeu croisé?
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

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

Comment ajouter des fonctions aux boutons pour Vue Comment ajouter des fonctions aux boutons pour Vue Apr 08, 2025 am 08:51 AM

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.

Comment utiliser Bootstrap en Vue Comment utiliser Bootstrap en Vue Apr 07, 2025 pm 11:33 PM

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.

Comment utiliser Watch in Vue Comment utiliser Watch in Vue Apr 07, 2025 pm 11:36 PM

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.

Comment référencer le fichier JS avec Vue.js Comment référencer le fichier JS avec Vue.js Apr 07, 2025 pm 11:27 PM

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.

Que signifie le développement de plusieurs pages Vue? Que signifie le développement de plusieurs pages Vue? Apr 07, 2025 pm 11:57 PM

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.

Comment interroger la version de Vue Comment interroger la version de Vue Apr 07, 2025 pm 11:24 PM

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.

Comment revenir à la page précédente par Vue Comment revenir à la page précédente par Vue Apr 07, 2025 pm 11:30 PM

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.

Comment utiliser la fonction interception vue Comment utiliser la fonction interception vue Apr 08, 2025 am 06:51 AM

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.

See all articles