vue 3 gibt Warnung aus “Externe Non-Emits-Ereignis-Listener”
Lesezeit: 3 Minuten
Ich versuche, mithilfe der Kompositions-API Daten vom Kind an das Elternteil zu senden
Ich bekomme folgende Warnung.
[Vue warn]: Überflüssige Non-Emits-Ereignis-Listener (updatedcount) wurden an die Komponente übergeben, konnten aber nicht automatisch vererbt werden, da die Komponente Fragment- oder Textstammknoten rendert. Wenn der Listener nur ein Komponenten-Listener für benutzerdefinierte Ereignisse sein soll, deklarieren Sie ihn mit der Option “emits”.at at
export default {
name: "HelloWorld",
emits: ["updatedcount"], // <--- add this line
setup(_,{ emit }) {
...
},
};
@Fanna1119 Ich habe auch eine Weile gebraucht, um es wiederzufinden, also mach dir keine Vorwürfe 😉
– Thomas
6. Oktober 2020 um 8:56 Uhr
Beachten Sie, dass es im Moment wahrscheinlich am besten ist, das Ereignis so zu benennen, wie Sie es getan haben – keine Bindestriche, nur Kleinbuchstaben. Wenn Sie es kebab-case nennen, beschwert sich die Laufzeitumgebung, dass Sie es in camelCase nicht als Ausgabe deklariert haben; Auf der anderen Seite, wenn Sie es camelCase nennen, beschwert sich EsLint, weil Veranstaltungen Kebab-Case sein sollen.
– Tobias Feil
20. November 2020 um 11:47 Uhr
Danke, Schöpfer des Universums, dass du SoF erstellt hast, damit gute Leute so gute Antworten posten können.
Wenn ich diesen Fehler in meinen eigenen vue 3-Apps sehe, habe ich festgestellt, dass das Umhüllen des Vorlageninhalts einer Komponente in ein leeres div das Problem für mich behebt, von dem ich glaube, dass es mit dem Teil der Fehlermeldung „konnte nicht automatisch vererbt werden“ zusammenhängt.
Es scheint, dass vue so funktioniert, dass vue versucht, die Attributvererbung für allgemeine Ereignisse wie @click und @input zu verwenden, um sie an zugrunde liegende Elemente weiterzugeben, aber wenn es mehrere gleichgeordnete Elemente am Stamm einer Komponente gibt, weiß es nicht, welches wählen.
Seien Sie gewarnt, dass diese Ereignisse einige Verhaltensweisen ändern könnten, da das neue umhüllende übergeordnete Div nun direkt mit Ereignissen verknüpft ist.
Die akzeptierte Antwort funktioniert hervorragend, aber Sie können Ihre untergeordnete Komponente auch einfach in ein einzelnes div packen.
– Coz
16. Oktober 2022 um 15:45 Uhr