


Lernen Sie die Attribute $attrs und $listeners in Vue kennen und sprechen Sie über deren Verwendung
Dieser Artikel führt Sie durch die leistungsstarken Tools zum Kapseln von Komponenten in vue: $attrs- und $listeners-Attribute und zeigt, wie sie verwendet werden. Ich hoffe, dass er für alle hilfreich ist!
Wenn bei der mehrstufigen Komponentenverschachtelung Daten übergeben werden müssen, wird normalerweise vuex
verwendet. Aber einfach Daten ohne Zwischenverarbeitung zu übertragen und vuex
für die Verarbeitung zu verwenden, ist übertrieben. Es gibt also zwei Attribute: $attrs
und $listeners
, die normalerweise zusammen mit inheritAttrs verwendet werden. [Verwandte Empfehlungen: vuejs Video-Tutorialvuex
。但仅仅是传递数据,不做中间处理,使用 vuex
处理,未免有些大材小用了。所以就有了 $attrs
、 $listeners
两个属性 ,通常配合 inheritAttrs 一起使用。【相关推荐:vuejs视频教程】
$attrs
- 从父组件传给自定义子组件的属性,如果没有
prop
接收会自动设置到子组件内部的最外层标签上,如果是class
和style
的话,会合并最外层标签的class
和style
。 - 如果子组件中不想继承父组件传入的非
prop
属性,可以使用inheritAttrs
禁用继承,然后通过v-bind="$attrs"
把外部传入的 非prop
属性设置给希望的标签上,但是这不会改变class
和style
。
inheritAttrs 属性
2.4.0 新增
官网链接 https://cn.vuejs.org/v2/api/#inheritAttrs
类型:
boolean
默认值:
true
-
详细:
默认情况下父作用域的不被认作 props 的 attribute 绑定 (attribute bindings) 将会“回退”且作为普通的 HTML attribute 应用在子组件的根元素上。当撰写包裹一个目标元素或另一个组件的组件时,这可能不会总是符合预期行为。通过设置
inheritAttrs
到false
,这些默认行为将会被去掉。而通过 (同样是 2.4 新增的) 实例 property$attrs
可以让这些 attribute 生效,且可以通过v-bind
显性的绑定到非根元素上。注意:这个选项不影响
class
和style
绑定。
例子:
父组件
<template> <my-input required placeholder="请输入内容" type="text" class="theme-dark" /> </template> <script> import MyInput from './child' export default { name: 'parent', components: { MyInput } } </script>
子组件
<template> <div> <input v-bind="$attrs" class="form-control" /> </div> </template> <script> export default { name: 'MyInput', inheritAttrs: false } </script>
子组件中没有接受父组件中传过来的值,也没有绑定,但是有v-bind="$attrs"
这个属性,他会自动接受并绑定
inheritAttrs: false
inheritAttrs: true
$listeners (官网解释)
- listeners: 包含了父作用域中的 (不含
.native
修饰器的)v-on
事件监听器。它可以通过v-on="$listeners"
传入内部组件——在创建更高层次的组件时非常有用。
先上代码:这里只举例focue
、input
两个原生事件
// 父组件 <template> <my-input required placeholder class="theme-dark" @focue="onFocus" @input="onInput" > </my-input> </template> <script> import MyInput from './child' export default { components: { MyInput }, methods: { onFocus (e) { console.log(e.target.value) }, onInput (e) { console.log(e.target.value) } } } </script>
// 子组件 <template> <div> <input type="text" v-bind="$attrs" class="form-control" @focus="$emit('focus', $event)" @input="$emit('input', $event)" /> </div> </template> <script> export default { name: 'MyInput', inheritAttrs: false } </script>
这样绑定原生事件很麻烦,每一个原生事件都需要绑定,但用v-on="$listeners"
]
$ attrs
- Attribute, die von der übergeordneten Komponente an die benutzerdefinierte untergeordnete Komponente übergeben werden, werden automatisch auf das äußerste Tag innerhalb der untergeordneten Komponente gesetzt, wenn kein
prop
für < empfangen wird code>class undstyle
werden dieclass
undstyle
des äußersten Tags zusammengeführt. - Wenn die untergeordnete Komponente die von der übergeordneten Komponente übergebenen Nicht-
prop
-Attribute nicht erben möchte, können Sie mitinheritAttrs
die Vererbung deaktivieren. und dann übergebenv-bind ="$attrs"
setzt die extern übergebenen Nicht-prop
-Attribute auf das gewünschte Tag, aber dadurch wirdclass</code nicht geändert > und <code>style< /code>. </li></ul><p><strong><span style="font-size: 18px;">inheritAttrs-Attribut</span></strong></p><blockquote><p>2.4.0 hinzugefügt <a href="https://www.php.cn/vuejs/" target="_blank" textvalue="vuejs教程"></a>offizieller Website-Link https ://cn.vuejs.org/v2/api/#inheritAttrs<a href="https://www.php.cn/course/list/1.html" target="_blank"></blockquote><ul><li></a><strong>Typ</strong>: <code>boolean
< li>🎜Standardwert: - 🎜Details: 🎜🎜Standardmäßig ist der übergeordnete Bereich kein Attribut Als Requisiten erkannte Bindungen werden „zurückfallen“ und als normale HTML-Attribute auf das Stammelement der untergeordneten Komponente angewendet. Beim Schreiben einer Komponente, die ein Zielelement oder eine andere Komponente umschließt, entspricht dies möglicherweise nicht immer dem erwarteten Verhalten. Durch Festlegen von
inheritAttrs
auffalse
werden diese Standardverhalten entfernt. Diese Attribute können über die Instanzeigenschaft (ebenfalls neu in 2.4) wirksam gemacht werden und können überv-bind
explizit an Nicht-Root-Elemente gebunden werden. 🎜🎜Hinweis: Diese Option hat keine Auswirkung aufclass
- undstyle
-Bindungen. 🎜
true
🎜<input type="text" v-bind="$attrs" class="form-control" + v-on="$listeners" - @focus="$emit('focus', $event)" - @input="$emit('input', $event)" />
v-bind="$attrs"
wird er automatisch akzeptiert und gebunden 🎜🎜inheritAttrs: false🎜🎜 $listeners (Offizielle Website-Erklärung)
-
listeners: Enthält den Inhalt im übergeordneten Bereich (ausgenommen
.native code> decorator's) <code>v-on
-Ereignis-Listener. Es kann überv-on="$listeners"
an interne Komponenten übergeben werden – sehr nützlich beim Erstellen von Komponenten auf höherer Ebene.
focue
und input
🎜rrreeerrreee🎜Es ist sehr mühsam, native Ereignisse zu binden Ereignisse wie dieses, jedes Alle nativen Ereignisse müssen gebunden werden, aber die Verwendung von v-on="$listeners"
erspart Ihnen viel Ärger🎜rrreee🎜Diese eine Codezeile kann das Bindungsproblem lösen alle nativen Veranstaltungen🎜🎜【Verwandte Empfehlungen: „🎜vuejs Tutorial🎜“, „🎜Web-Frontend🎜“]🎜Das obige ist der detaillierte Inhalt vonLernen Sie die Attribute $attrs und $listeners in Vue kennen und sprechen Sie über deren Verwendung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

Durch die Verwendung von ECharts in Vue können Sie Ihrer Anwendung ganz einfach Datenvisualisierungsfunktionen hinzufügen. Zu den spezifischen Schritten gehören: Installieren von ECharts- und Vue ECharts-Paketen, Einführung von ECharts, Erstellen von Diagrammkomponenten, Konfigurieren von Optionen, Verwenden von Diagrammkomponenten, Anpassen von Diagrammen an Vue-Daten, Hinzufügen interaktiver Funktionen und Verwenden erweiterter Verwendungsmöglichkeiten.

Frage: Welche Rolle spielt der Exportstandard in Vue? Detaillierte Beschreibung: Exportstandard definiert den Standardexport der Komponente. Beim Importieren werden Komponenten automatisch importiert. Vereinfachen Sie den Importvorgang, verbessern Sie die Übersichtlichkeit und vermeiden Sie Konflikte. Wird häufig zum Exportieren einzelner Komponenten verwendet, wobei sowohl benannte als auch Standardexporte verwendet werden und globale Komponenten registriert werden.

Die Kartenfunktion von Vue.js ist eine integrierte Funktion höherer Ordnung, die ein neues Array erstellt, wobei jedes Element das transformierte Ergebnis jedes Elements im ursprünglichen Array ist. Die Syntax lautet map(callbackFn), wobei callbackFn jedes Element im Array als erstes Argument empfängt, optional den Index als zweites Argument, und einen Wert zurückgibt. Die Kartenfunktion ändert das ursprüngliche Array nicht.

In Vue.js ist event ein natives JavaScript-Ereignis, das vom Browser ausgelöst wird, während $event ein Vue-spezifisches abstraktes Ereignisobjekt ist, das in Vue-Komponenten verwendet wird. Im Allgemeinen ist die Verwendung von $event bequemer, da es so formatiert und erweitert ist, dass es die Datenbindung unterstützt. Verwenden Sie „event“, wenn Sie auf bestimmte Funktionen des nativen Ereignisobjekts zugreifen müssen.

Es gibt zwei Möglichkeiten, Module in Vue.js zu exportieren: Export und Export Default. export wird zum Exportieren benannter Entitäten verwendet und erfordert die Verwendung von geschweiften Klammern; export default wird zum Exportieren von Standardentitäten verwendet und erfordert keine geschweiften Klammern. Beim Importieren müssen per Export exportierte Entitäten ihre Namen verwenden, während per Exportstandard exportierte Entitäten implizit verwendet werden können. Es wird empfohlen, die Export-Standardeinstellung für Module zu verwenden, die mehrmals importiert werden müssen, und die Export-Standardeinstellung für Module, die nur einmal exportiert werden müssen.

onMounted ist ein Lebenszyklus-Hook für die Komponentenmontage in Vue. Seine Funktion besteht darin, Initialisierungsvorgänge durchzuführen, nachdem die Komponente im DOM bereitgestellt wurde, z. B. das Abrufen von Referenzen auf DOM-Elemente, das Festlegen von Daten, das Senden von HTTP-Anforderungen, das Registrieren von Ereignis-Listenern usw. Es wird nur einmal aufgerufen, wenn die Komponente gemountet wird. Wenn Sie Vorgänge ausführen müssen, nachdem die Komponente aktualisiert wurde oder bevor sie zerstört wurde, können Sie andere Lebenszyklus-Hooks verwenden.

Vue-Hooks sind Rückruffunktionen, die Aktionen bei bestimmten Ereignissen oder Lebenszyklusphasen ausführen. Dazu gehören Lebenszyklus-Hooks (wie beforeCreate, mount, beforeDestroy), Event-Handling-Hooks (wie click, input, keydown) und benutzerdefinierte Hooks. Hooks verbessern die Komponentenkontrolle, reagieren auf Komponentenlebenszyklen, verarbeiten Benutzerinteraktionen und verbessern die Wiederverwendbarkeit von Komponenten. Um Hooks zu verwenden, definieren Sie einfach die Hook-Funktion, führen Sie die Logik aus und geben Sie einen optionalen Wert zurück.

Vue.js-Ereignismodifikatoren werden verwendet, um bestimmte Verhaltensweisen hinzuzufügen, darunter: Verhindern von Standardverhalten (.prevent), Stoppen von Ereignisblasen (.stop), Einmaliges Ereignis (.once), Erfassen von Ereignissen (.capture), Passives Abhören von Ereignissen (.passive), Adaptiv Modifikator (.self)Schlüsselmodifikator (.key)
