suchen
HeimWeb-FrontendView.jsTauchen Sie tief in benutzerdefinierte Ereignisse in Vue-Komponenten ein

Was sind benutzerdefinierte Komponentenereignisse? Dieser Artikel vermittelt Ihnen ein detailliertes Verständnis der benutzerdefinierten Ereignisse in der Vue-Komponente und erläutert die Punkte, die Sie bei benutzerdefinierten Ereignissen beachten sollten. Ich hoffe, dass er Ihnen hilfreich sein wird!

Tauchen Sie tief in benutzerdefinierte Ereignisse in Vue-Komponenten ein

Das benutzerdefinierte Ereignis einer Komponente ist eine Kommunikationsmethode zwischen Komponenten, die für untergeordnete Komponenten geeignet ist, um Daten oder Verhalten an übergeordnete Komponenten weiterzugeben. (Lernvideo-Sharing: vuejs-Tutorial)

Schematisches Diagramm

Tauchen Sie tief in benutzerdefinierte Ereignisse in Vue-Komponenten ein

Hinweise zu den benutzerdefinierten Ereignissen der Komponente:

  • 1. Das benutzerdefinierte Ereignis der Komponente implementiert die Kommunikation zwischen der untergeordneten Komponente und Die Funktion der übergeordneten Komponente, daher muss die Bindungsaktion des benutzerdefinierten Ereignisses in der übergeordneten Komponente ausgeführt werden.

  • 2 Die auslösende Aktion des benutzerdefinierten Ereignisses der Komponente muss in der untergeordneten Komponente ausgeführt werden Ausgelöst

Bevor wir die benutzerdefinierten Ereignisse der Komponente verstanden haben, haben wir auch gelernt, dass props auch die Kommunikation zwischen Unterkomponenten und übergeordneten Komponenten implementieren kann Übergang von der props-Methode zu den benutzerdefinierten Ereignissen der Komponente, damit jeder die benutzerdefinierten Ereignisse der Komponente besser verstehen und auch die Unterschiede und Ähnlichkeiten zwischen den beiden Methoden vergleichen kannpropsprops也能实现子组件向父组件通信,接下来,我将从props的方式过渡到组件的自定义事件,以便大家能够更好的理解组件的自定义事件,也可以对比这两种方式存在的差异和相似之处

通过props实现组件间通信

App.vue中:

<!-- 通过父组件给子组件传递函数类型的props实现:子给父传递数据 -->
<TestA :getName="getName"/>
...
...
<script>
import TestA from &#39;./components/TestA&#39;
	export default {
		name:&#39;App&#39;,
		components:{TestA},
		data(){
			return{
				msg:&#39;你好呀&#39;
			}
		},
		methods:{
			getName(name){
				console.log(&#39;App组件收到了数据&#39;, name)
			},
		},
	}
</script>

代码片段中getName()方法中的name参数用于接收子组件传递过来的参数

TestA.vue:

<!--通过点击事件传递数据-->
<button @click="sendName">将姓名发送给App组件</button>
...
...
<script>
export default {
    name:&#39;TestA&#39;,
    //接收父组件传递过来的props
    props:["getName"],
    data(){
        return{
            name:&#39;路飞&#39;,
            age:18
        }
    },
    methods:{
        sendName(){
            //点击按钮后,触发此方法,传递name给父组件
            this.getName(this.name)
        }
    }
}
</script>

以上是用props实现的子组件向父组件传递数据

效果图如下:

页面初始化效果:

Tauchen Sie tief in benutzerdefinierte Ereignisse in Vue-Komponenten ein

点击按钮后:

Tauchen Sie tief in benutzerdefinierte Ereignisse in Vue-Komponenten ein

通过图上可以看出,当点击按钮之后,控制台输出了父组件收到的数据,子组件通过props的方式向父组件传递了数据

通过组件的自定义事件实现组件间通信

首先第一步,就是要给组件绑定一个自定义事件,文章开始就说,绑定自定义事件是在父组件中完成的:

Tauchen Sie tief in benutzerdefinierte Ereignisse in Vue-Komponenten ein

其次,在子组件中,需要对自定义事件进行触发,完成组件自定义事件通信:

Tauchen Sie tief in benutzerdefinierte Ereignisse in Vue-Komponenten ein

效果图如下:

页面初始化效果:

Tauchen Sie tief in benutzerdefinierte Ereignisse in Vue-Komponenten ein

点击按钮后:

Tauchen Sie tief in benutzerdefinierte Ereignisse in Vue-Komponenten ein

通过图上可以看出,当点击按之后,控制台输出了父组件收到的数据。

通过以上两种通信方式,我们可以发现,子组件通过props方式向父组件传递数据,前提是父组件要给子组件传递一个回调函数,子组件接收之后,才能向父组件传递数据,而组件的自定义事件只需调用 $emit 方法对指定自定义事件进行触发,即可向父组件传递数据。

组件自定义事件其他知识点

自定义组件绑定的第二种方式

App.vue:

<template>
	<div class="app">
		<h1 id="msg">{{msg}}</h1>
		<!-- 通过父组件给子组件传递函数类型的props实现:子给父传递数据 -->
		<TestA :getName="getName"/>
		<!-- 通过父组件给子组件绑定一个自定义事件实现:子给父传递数据 -->
    <!--方法二-->
		<TestB ref="testb"/>
	</div>
</template>

<script>
import TestA from &#39;./components/TestA&#39;
import TestB from &#39;./components/TestB&#39;
	export default {
		name:&#39;App&#39;,
		components:{TestA, TestB},
		data(){
			return{
				msg:&#39;你好呀&#39;
			}
		},
		methods:{
			getName(name){
				console.log(&#39;我收到了数据&#39;, name)
			},
			send(name){
				console.log("send被调用了", name)
			}
		},
		mounted(){
			this.$refs.testb.$on(&#39;demo&#39;, this.send);
		}
	}
</script>

<style scoped>
.app{
	background-color: rgb(162, 255, 139);
	padding: 15px;
}
</style>

通过ref属性拿到TestB组件组件的实例对象(vc),在组件挂载完成之后(mounted)使用this.$refs.组件名.$on('自定义事件名', 回调函数)

Kommunikation zwischen Komponenten über Requisiten

App.vue:

v-on:事件名.once="XXXX
或者
this.$refs.student.$once("事件名", 事件内容)

Der name-Parameter in der <code>getName()-Methode im Code-Snippet Code> Wird zum Empfangen von Parametern verwendet, die von Unterkomponenten übergeben werden. TestA.vue: Seiteninitialisierungseffekt: Tauchen Sie tief in benutzerdefinierte Ereignisse in Vue-Komponenten ein

Nach dem Klicken auf die Schaltfläche:

3 .pngWie auf dem Bild zu sehen ist, gibt die Konsole beim Klicken auf die Schaltfläche die von der übergeordneten Komponente empfangenen Daten aus und die untergeordnete Komponente übergibt die Daten über props an die übergeordnete Komponente code>

Die Kommunikation zwischen Komponenten wird durch benutzerdefinierte Ereignisse von Komponenten erreicht. Der erste Schritt besteht darin, ein benutzerdefiniertes Ereignis an die Komponente zu binden. Wie am Anfang des Artikels erwähnt , das Binden benutzerdefinierter Ereignisse ist in der übergeordneten Komponente abgeschlossen: Tauchen Sie tief in benutzerdefinierte Ereignisse in Vue-Komponenten ein

Zweitens müssen in der Unterkomponente benutzerdefinierte Ereignisse ausgelöst werden, um die Kommunikation benutzerdefinierter Komponentenereignisse abzuschließen:

🎜Tauchen Sie tief in benutzerdefinierte Ereignisse in Vue-Komponenten ein🎜🎜🎜Das Effektbild ist wie folgt: 🎜🎜🎜Seiteninitialisierungseffekt: 🎜🎜Tauchen Sie tief in benutzerdefinierte Ereignisse in Vue-Komponenten ein🎜🎜Nach dem Klicken auf die Schaltfläche:🎜 🎜Tauchen Sie tief in benutzerdefinierte Ereignisse in Vue-Komponenten ein🎜🎜Wie du Wie Sie auf dem Bild sehen können, gibt die Konsole beim Klicken auf anschließend die von der übergeordneten Komponente empfangenen Daten aus. 🎜🎜Durch die beiden oben genannten Kommunikationsmethoden können wir feststellen, dass die untergeordnete Komponente Daten über props an die übergeordnete Komponente weitergibt. 🎜Die Voraussetzung ist, dass die übergeordnete Komponente eine Rückruffunktion an die untergeordnete Komponente übergeben muss 🎜 Nachdem die untergeordnete Komponente Daten an die übergeordnete Komponente übergeben hat, muss das benutzerdefinierte Ereignis der Komponente nur die Methode $emit aufrufen, um das angegebene benutzerdefinierte Ereignis auszulösen Daten an die übergeordnete Komponente übergeben. 🎜

🎜Weitere Wissenspunkte zu benutzerdefinierten Komponentenereignissen🎜🎜🎜🎜Die zweite Möglichkeit, die Komponentenbindung anzupassen🎜🎜🎜🎜App.vue:🎜🎜
<template>
  <div>
      <h2 id="籍贯-native">籍贯:{{native}}</h2>
      <h2 id="详细地址-adress">详细地址:{{adress}}</h2>
      <button @click="sendNative">点击触发自定义事件</button>
      <button @click="noBand">解绑自定义事件</button>
  </div>
</template>

<script>
export default {
    name:&#39;TestB&#39;,
    data(){
        return{
            native:&#39;东海&#39;,
            adress:&#39;东海风车村&#39;
        }
    },
    methods:{
        sendNative(){
            this.$emit(&#39;demo&#39;,this.native)
        },
        //解绑demo自定义事件
        noBand(){
            this.$off(&#39;demo&#39;);
        }
    }
    
}
</script>

<style scoped>
div{
    background-color: aquamarine;
    padding: 15px;
    margin-top: 5px;
}
</style>
🎜By ref -Attribut ruft das Instanzobjekt der TestB-Komponente (vc) ab. Nachdem die Komponente gemountet (gemountet) wurde, verwenden Sie this.$refs.component name.$on( 'Custom Ereignisname', Rückruffunktion) vervollständigt die Bindung des benutzerdefinierten Ereignisses der Unterkomponente und kann auch den gleichen Effekt erzielen. 🎜🎜Darüber hinaus ist diese Methode flexibler und kann einige Vorgänge abschließen, z. B. einmalige benutzerdefinierte Ereignisse, Verzögerungen, Beurteilungen usw. 🎜🎜🎜Einmaliges benutzerdefiniertes Ereignis🎜🎜
{方法体内
    this.$off();
}
🎜🎜Entbindung von benutzerdefinierten Ereignissen🎜🎜🎜Nachdem wir das benutzerdefinierte Ereignis verwendet haben, können wir die Bindung des benutzerdefinierten Ereignisses aufheben. Der Vorteil davon besteht darin, die Auswirkungen auf die Programmleistung zu minimieren Effizienz des Programmbetriebs🎜🎜Benutzerdefinierte Entbindungsaktionen werden auch in Unterkomponenten ausgeführt.🎜Einfach ausgedrückt: Wer auch immer sie gebunden hat, kann sie entbinden.🎜🎜🎜🎜In TestB🎜🎜rrreee🎜Auch ein Punkt ist, dass, wenn es viele benutzerdefinierte Ereignisse gibt, die benötigt werden Um ungebunden zu sein, kannst du so schreiben: 🎜
{方法体内
    this.$off();
}

直接不用传递任何参数,这样写的话,只要是给此组件绑定的任何自定义事件都会解绑

总结

以上内容就是组件的自定义事件的使用,自定义事件虽然在Vuejs中不是一个非常重要的点,但是也是一个实际开发中比较常用的点,在进行某些业务操作时,使用自定义事件可能会节省开发时间以及优化代码,减少代码冗余量,组件自定义事件的具体操作还要看所处的业务逻辑和行为是什么。

Tauchen Sie tief in benutzerdefinierte Ereignisse in Vue-Komponenten ein

如果觉得内容不错的话,记得点赞收藏~~~

(学习视频分享:web前端开发

Das obige ist der detaillierte Inhalt vonTauchen Sie tief in benutzerdefinierte Ereignisse in Vue-Komponenten ein. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme
Dieser Artikel ist reproduziert unter:掘金社区. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen
Reagieren und Netflix: Erforschen der BeziehungReagieren und Netflix: Erforschen der BeziehungApr 26, 2025 am 12:11 AM

Netflix verwendet React, um die Benutzererfahrung zu verbessern. 1) Die komponentierten Merkmale von React unterstützen die Netflix -Komplex -Benutzeroberfläche in überschaubare Module. 2) Virtual DOM optimiert UI -Updates und verbessert die Leistung. 3) Die Kombination von Redux und GraphQL verwaltet Netflix den Anwendungsstatus und den Datenfluss effizient.

Vue.js vs. Backend Frameworks: Klärung der UnterscheidungVue.js vs. Backend Frameworks: Klärung der UnterscheidungApr 25, 2025 am 12:05 AM

Vue.js ist ein Front-End-Framework, und das Back-End-Framework wird verwendet, um die serverseitige Logik zu verarbeiten. 1) Vue.js konzentriert sich auf den Aufbau von Benutzeroberflächen und vereinfacht die Entwicklung durch komponentierte und reaktionsschnelle Datenbindung. 2) Back-End-Frameworks wie Express- und Django-HTTP-Anforderungen, Datenbankvorgänge und Geschäftslogik und auf dem Server ausgeführt.

Vue.js und der Frontend Stack: Verständnis der VerbindungenVue.js und der Frontend Stack: Verständnis der VerbindungenApr 24, 2025 am 12:19 AM

Vue.js ist eng in den Front-End-Technologie-Stack integriert, um die Entwicklungseffizienz und die Benutzererfahrung zu verbessern. 1) Konstruktionstools: Integrieren Sie sich in Webpack und Rollup, um eine modulare Entwicklung zu erzielen. 2) Staatsmanagement: Integrieren Sie sich in Vuex, um den komplexen Anwendungsstatus zu verwalten. 3) Routing: Integrieren Sie sich in Vuerouter, um einseitige Anwendungsrouting zu realisieren. 4) CSS -Präprozessor: Unterstützt SASS und weniger, um die Stilentwicklungseffizienz zu verbessern.

Netflix: Erforschung der Verwendung von React (oder anderen Frameworks)Netflix: Erforschung der Verwendung von React (oder anderen Frameworks)Apr 23, 2025 am 12:02 AM

Netflix wählte React, um seine Benutzeroberfläche zu erstellen, da die Komponentendesign und der virtuelle DOM -Mechanismus von React komplexe Schnittstellen und häufige Updates effizient verarbeiten können. 1) Komponentenbasiertes Design ermöglicht es Netflix, die Schnittstelle in überschaubare Widgets zu unterteilen und die Entwicklungseffizienz und Code-Wartbarkeit zu verbessern. 2) Der virtuelle DOM -Mechanismus sorgt für die Glätte und hohe Leistung der Netflix -Benutzeroberfläche durch Minimierung von DOM -Operationen.

Vue.js und das Frontend: Ein tiefer Eintauchen in den RahmenVue.js und das Frontend: Ein tiefer Eintauchen in den RahmenApr 22, 2025 am 12:04 AM

Vue.js wird von Entwicklern geliebt, weil es einfach zu bedienen und mächtig ist. 1) Das reaktionsschnelle Datenbindungssystem aktualisiert die Ansicht automatisch. 2) Das Komponentensystem verbessert die Wiederverwendbarkeit und Wartbarkeit des Codes. 3) Computereigenschaften und Hörer verbessern die Lesbarkeit und Leistung des Codes. 4) Die Verwendung von Vodevtools und Überprüfung auf Konsolenfehler sind häufige Debugging -Techniken. 5) Die Leistungsoptimierung umfasst die Verwendung von Schlüsselattributen, berechneten Attributen und Keep-Alive-Komponenten. 6) Zu den Best Practices zählen eindeutige Komponentenbenennungen, die Verwendung von Einzeldateikomponenten und die rationale Verwendung von Lebenszyklushaken.

Die Kraft von Vue.js am Frontend: Schlüsselmerkmale und VorteileDie Kraft von Vue.js am Frontend: Schlüsselmerkmale und VorteileApr 21, 2025 am 12:07 AM

VUE.JS ist ein progressives JavaScript-Framework, das zum Aufbau effizienter und wartbarer Front-End-Anwendungen geeignet ist. Zu den wichtigsten Merkmalen gehören: 1. Responsive Datenbindung, 2. Komponentenentwicklung, 3. Virtual DOM. Durch diese Funktionen vereinfacht Vue.js den Entwicklungsprozess, verbessert die Anwendungsleistung und -wartbarkeit und macht ihn in der modernen Webentwicklung sehr beliebt.

Ist Vue.js besser als React?Ist Vue.js besser als React?Apr 20, 2025 am 12:05 AM

Vue.js und reagieren jeweils ihre eigenen Vor- und Nachteile, und die Wahl hängt von den Projektanforderungen und den Teambedingungen ab. 1) Vue.js eignet sich aufgrund seiner Einfachheit und einfach zu bedienung für kleine Projekte und Anfänger. 2) React ist aufgrund seines reichhaltigen Ökosystem- und Komponentendesigns für große Projekte und komplexe Benutzeroberflächen geeignet.

VUE.JS -Funktion: Verbesserung der Benutzererfahrung am FrontendVUE.JS -Funktion: Verbesserung der Benutzererfahrung am FrontendApr 19, 2025 am 12:13 AM

Vue.js verbessert die Benutzererfahrung durch mehrere Funktionen: 1. Responsives System realisiert Echtzeitdaten-Feedback; 2. Die Komponentenentwicklung verbessert die Wiederverwendbarkeit des Codes; 3.. Vuerouter bietet eine reibungslose Navigation; 4. Dynamische Datenbindung und Übergangsanimation verbessern den Interaktionseffekt; 5. Fehlerverarbeitungsmechanismus sorgt für das Feedback der Benutzer. 6. Leistungsoptimierung und Best Practices verbessern die Anwendungsleistung.

See all articles

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heiße Werkzeuge

DVWA

DVWA

Damn Vulnerable Web App (DVWA) ist eine PHP/MySQL-Webanwendung, die sehr anfällig ist. Seine Hauptziele bestehen darin, Sicherheitsexperten dabei zu helfen, ihre Fähigkeiten und Tools in einem rechtlichen Umfeld zu testen, Webentwicklern dabei zu helfen, den Prozess der Sicherung von Webanwendungen besser zu verstehen, und Lehrern/Schülern dabei zu helfen, in einer Unterrichtsumgebung Webanwendungen zu lehren/lernen Sicherheit. Das Ziel von DVWA besteht darin, einige der häufigsten Web-Schwachstellen über eine einfache und unkomplizierte Benutzeroberfläche mit unterschiedlichen Schwierigkeitsgraden zu üben. Bitte beachten Sie, dass diese Software

mPDF

mPDF

mPDF ist eine PHP-Bibliothek, die PDF-Dateien aus UTF-8-codiertem HTML generieren kann. Der ursprüngliche Autor, Ian Back, hat mPDF geschrieben, um PDF-Dateien „on the fly“ von seiner Website auszugeben und verschiedene Sprachen zu verarbeiten. Es ist langsamer und erzeugt bei der Verwendung von Unicode-Schriftarten größere Dateien als Originalskripte wie HTML2FPDF, unterstützt aber CSS-Stile usw. und verfügt über viele Verbesserungen. Unterstützt fast alle Sprachen, einschließlich RTL (Arabisch und Hebräisch) und CJK (Chinesisch, Japanisch und Koreanisch). Unterstützt verschachtelte Elemente auf Blockebene (wie P, DIV),

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Linux neue Version

SublimeText3 Linux neue Version

SublimeText3 Linux neueste Version

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen