Requisiten für Vue-Komponentenoptionen
Wie bereits erwähnt
Die meisten von der Komponente akzeptierten Optionen sind dieselben wie die Vue-Instanz, und die Option props ist eine sehr wichtige Option in der Komponente. In Vue kann die Beziehung zwischen übergeordneten und untergeordneten Komponenten wie folgt zusammengefasst werden: Requisiten nach unten, Ereignisse nach oben. Die übergeordnete Komponente leitet Daten über Requisiten an die untergeordnete Komponente weiter, und die untergeordnete Komponente sendet über Ereignisse Nachrichten an die übergeordnete Komponente. In diesem Artikel werden die Requisiten der Vue-Komponentenoptionen ausführlich vorgestellt
statische Requisiten
Der Bereich der Komponenteninstanz ist isoliert. Das bedeutet, dass Sie die Daten der übergeordneten Komponente nicht direkt in der Vorlage der untergeordneten Komponente referenzieren können (und sollten). Damit die untergeordnete Komponente die Daten der übergeordneten Komponente verwenden kann, müssen Sie die props-Option der untergeordneten Komponente verwenden
Die Verwendung von Prop zum Übertragen von Daten umfasst zunächst die statischen Requisiten
. Die untergeordnete Komponente muss angezeigt werden. Deklariert die erwarteten Daten mithilfe der Option props
var childNode = { template: '<p>{{message}}</p>', props:['message'] }
<p id="example"> <parent></parent></p>
<script>var childNode = { template: '<p>{{message}}</p>', props:['message'] }var parentNode = { template: ` <p class="parent"> <child message="aaa"></child> <child message="bbb"></child> </p>`, components: { 'child': childNode } };// 创建根实例new Vue({ el: '#example', components: { 'parent': parentNode } })</script>
var parentNode = { template: ` <p class="parent"> <child my-message="aaa"></child> <child my-message="bbb"></child> </p>`, components: { 'child': childNode } };
Bei der Deklaration des untergeordneten Requisitenattributs können Sie die Kleinschreibung oder den Unterstrich verwenden. Wenn die untergeordnete Vorlage vom übergeordneten Element übergebene Variablen verwendet, müssen Sie dies tun Verwenden Sie das entsprechende kleine Kameletui props
Verwenden Sie in der Vorlage
, um die Daten der übergeordneten Komponente dynamisch an die Requisiten der untergeordneten Vorlage zu binden, ähnlich wie bei der Bindung an jede normale HTML-Funktion. Immer wenn sich die Daten der übergeordneten Komponente ändern, wird die Änderung auch an die untergeordnete Komponente übermitteltvar childNode = { template: '<p>{{myMessage}}</p>', props:['myMessage'] }
var childNode = { template: '<p>{{myMessage}}</p>', props:['my-message'] }
Zahlen übergeben
v-bind
Ein häufiger Fehler, den Anfänger machen, besteht darin, wörtliche Syntax zu verwenden, um Werte zu übergeben
var childNode = { template: '<p>{{myMessage}}</p>', props:['myMessage'] }
var parentNode = { template: ` <p class="parent"> <child :my-message="data1"></child> <child :my-message="data2"></child> </p>`, components: { 'child': childNode }, data(){ return { 'data1':'aaa', 'data2':'bbb' } } };
<!-- 传递了一个字符串 "1" --><comp some-prop="1"></comp>
und keine Zahl. Wenn Sie eine tatsächliche Zahl übergeben möchten, müssen Sie
verwenden, damit sein Wert als JS-Ausdruck<p id="example"> <my-parent></my-parent></p>
<script>var childNode = { template: '<p>{{myMessage}}的类型是{{type}}</p>', props:['myMessage'], computed:{ type(){ return typeof this.myMessage } } }var parentNode = { template: ` <p class="parent"> <my-child my-message="1"></my-child> </p>`, components: { 'myChild': childNode } };// 创建根实例new Vue({ el: '#example', components: { 'MyParent': parentNode } })</script>
"1"
Oder Sie nutzen dynamische Requisiten und setzen im Datenattribut v-bind
<!-- 传递实际的 number --><comp v-bind:some-prop="1"></comp>
Requisitenüberprüfung
var parentNode = { template: ` <p class="parent"> <my-child :my-message="1"></my-child> </p>`, components: { 'myChild': childNode } };
var parentNode = { template: ` <p class="parent"> <my-child :my-message="data"></my-child> </p>`, components: { 'myChild': childNode }, data(){ return { 'data': 1 } } };
Erkennung.
Wenn die Requisitenvalidierung fehlschlägt, gibt Vue eine Warnung aus (wenn Sie die Entwicklungsversion verwenden). Requisiten werden
überprüft, bevor die Komponenteninstanz erstellt wirdVue.component('example', { props: { // 基础类型检测 (`null` 意思是任何类型都可以) propA: Number, // 多种类型 propB: [String, Number], // 必传且是字符串 propC: { type: String, required: true }, // 数字,有默认值 propD: { type: Number, default: 100 }, // 数组/对象的默认值应当由一个工厂函数返回 propE: { type: Object, default: function () { return { message: 'hello' } } }, // 自定义验证函数 propF: { validator: function (value) { return value > 10 } } } })
oder
Instanzeigenschaften wie, type
oder
Das Folgende ist ein einfaches Beispiel. Wenn die an die untergeordnete Komponente übergebene Nachricht keine Zahl ist, wird eine Warnung ausgegeben
String Number Boolean Function Object Array Symbol
type
instanceof
default
validator
Bei der Übergabe der Nummer 123 erfolgt keine Warnung. Wenn die Zeichenfolge „123“ übergeben wird, sieht das Ergebnis wie folgt aus: data
computed
methods
Ändern Sie den Inhalt der Unterkomponente im obigen Code wie folgt. Sie können die Überprüfungsfunktion anpassen. Wenn die Funktion „Falsch“ zurückgibt, wird eine Warnmeldung
<p id="example"> <parent></parent> </p>
ausgegeben. Der in der übergeordneten Komponente übergebene Nachrichtenwert ist 1. Da er kleiner ist als 10, eine Warnmeldung
wird ausgegeben<script> var childNode = { template: '<p>{{message}}</p>', props:{ 'message':Number } } var parentNode = { template: ` <p class="parent"> <child :message="msg"></child> </p>`, components: { 'child': childNode }, data(){ return{ msg: '123' } } }; // 创建根实例 new Vue({ el: '#example', components: { 'parent': parentNode } }) </script>
Einseitiger Datenfluss
var childNode = { template: '<p>{{message}}</p>', props:{ 'message':{ validator: function (value) { return value > 10 } } } }
另外,每次父组件更新时,子组件的所有 prop 都会更新为最新值。这意味着不应该在子组件内部改变 prop。如果这么做了,Vue 会在控制台给出警告
下面是一个典型例子
<p id="example"> <parent></parent> </p>
<script> var childNode = { template: ` <p class="child"> <p> <span>子组件数据</span> <input v-model="childMsg"> </p> <p>{{childMsg}}</p> </p> `, props:['childMsg'] } var parentNode = { template: ` <p class="parent"> <p> <span>父组件数据</span> <input v-model="msg"> </p> <p>{{msg}}</p> <child :child-msg="msg"></child> </p> `, components: { 'child': childNode }, data(){ return { 'msg':'match' } } }; // 创建根实例 new Vue({ el: '#example', components: { 'parent': parentNode } }) </script>
父组件数据变化时,子组件数据会相应变化;而子组件数据变化时,父组件数据不变,并在控制台显示警告
修改子组件数据时,打开浏览器控制台会出现下图所示警告提示
修改prop数据
修改prop中的数据,通常有以下两种原因
1、prop 作为初始值传入后,子组件想把它当作局部数据来用
2、prop 作为初始值传入,由子组件处理成其它数据输出
[注意]JS中对象和数组是引用类型,指向同一个内存空间,如果 prop 是一个对象或数组,在子组件内部改变它会影响父组件的状态
对于这两种情况,正确的应对方式是
1、定义一个局部变量,并用 prop 的值初始化它
props: ['initialCounter'], data: function () { return { counter: this.initialCounter } }
但是,定义的局部变量counter只能接受initialCounter的初始值,当父组件要传递的值发生变化时,counter无法接收到最新值
<p id="example"> <parent></parent></p><script>var childNode = { template: ` <p class="child"> <p> <span>子组件数据</span> <input v-model="temp"> </p> <p>{{temp}}</p> </p> `, props:['childMsg'], data(){ return{ temp:this.childMsg } }, };var parentNode = { template: ` <p class="parent"> <p> <span>父组件数据</span> <input v-model="msg"> </p> <p>{{msg}}</p> <child :child-msg="msg"></child> </p> `, components: { 'child': childNode }, data(){ return { 'msg':'match' } } };// 创建根实例new Vue({ el: '#example', components: { 'parent': parentNode } })</script>
下面示例中,除初始值外,父组件的值无法更新到子组件中
2、定义一个计算属性,处理 prop 的值并返回
props: ['size'], computed: { normalizedSize: function () { return this.size.trim().toLowerCase() } }
但是,由于是计算属性,则只能显示值,而不能设置值
<script src="https://unpkg.com/vue"></script><script>var childNode = { template: ` <p class="child"> <p> <span>子组件数据</span> <input v-model="temp"> </p> <p>{{temp}}</p> </p> `, props:['childMsg'], computed:{ temp(){ return this.childMsg } }, };var parentNode = { template: ` <p class="parent"> <p> <span>父组件数据</span> <input v-model="msg"> </p> <p>{{msg}}</p> <child :child-msg="msg"></child> </p> `, components: { 'child': childNode }, data(){ return { 'msg':'match' } } };// 创建根实例new Vue({ el: '#example', components: { 'parent': parentNode } })</script>
下面示例中,由于子组件使用的是计算属性,所以,子组件的数据无法手动修改
3、更加妥帖的方案是,使用变量储存prop的初始值,并使用watch来观察prop的值的变化。发生变化时,更新变量的值
<p id="example"> <parent></parent></p><script>var childNode = { template: ` <p class="child"> <p> <span>子组件数据</span> <input v-model="temp"> </p> <p>{{temp}}</p> </p> `, props:['childMsg'], data(){ return{ temp:this.childMsg } }, watch:{ childMsg(){ this.temp = this.childMsg } } };var parentNode = { template: ` <p class="parent"> <p> <span>父组件数据</span> <input v-model="msg"> </p> <p>{{msg}}</p> <child :child-msg="msg"></child> </p> `, components: { 'child': childNode }, data(){ return { 'msg':'match' } } };// 创建根实例new Vue({ el: '#example', components: { 'parent': parentNode } })</script>
Das obige ist der detaillierte Inhalt vonRequisiten für Vue-Komponentenoptionen. 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

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

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

Beim iPhone 15 Pro-Modell hat Apple drei Brennweitenoptionen für Aufnahmen mit der Hauptkamera eingeführt. In diesem Artikel wird erklärt, was diese Optionen sind und wie Sie Ihre bevorzugte Standardbrennweite zum Aufnehmen von Fotos festlegen. Um die Vorteile des verbesserten Kamerasystems des iPhone 15 Pro und iPhone 15 Pro Max voll auszunutzen, hat Apple den optischen Zoom der Hauptkamera um drei verschiedene Brennweitenoptionen erweitert. Zusätzlich zum Standardmodus 1x (24 mm) hat Apple die Einstellungen 1,2x (28 mm) und 1,5x (35 mm) hinzugefügt. iPhone 15 Pro-Benutzer können beim Fotografieren aus diesen Brennweiten wählen, indem sie einfach auf die 1x-Taste in der Kamera-App tippen. Aus technischen Gründen sind diese jedoch zentral
![Persönliche Hotspot-Option auf dem iPhone nicht gefunden [Behoben]](https://img.php.cn/upload/article/000/887/227/168942511475372.png?x-oss-process=image/resize,m_fill,h_207,w_330)
Wenn um uns herum kein WLAN-Signal vorhanden ist, denken wir doch an einen persönlichen Hotspot auf unserem iPhone, oder? Kürzlich haben viele iPhone-Benutzer geäußert, dass sie die Option „Persönlicher Hotspot“ auf ihrem iPhone nicht finden können und dies daher für alle ein großes Problem darstellt. Zu den Hauptgründen, die dieses spezielle Problem auf Ihrem iPhone verursachen können, gehören möglicherweise die folgenden Gründe. Kleine Softwarefehler im iPhone. Die iOS-Software auf Ihrem iPhone ist nicht auf die neueste Version aktualisiert. Es wurden Änderungen an den Netzwerkeinstellungen auf dem iPhone vorgenommen. Aktualisieren Sie die Netzbetreibereinstellungen nicht (falls vorhanden). Es liegt ein Problem mit dem Mobilfunknetzsignal auf dem iPhone vor. Nachdem wir uns mit diesen Faktoren befasst hatten, fanden wir eine einfache Lösung für dieses Problem und verwendeten sie

Viele Benutzer stoßen beim Spielen einiger Spiele unter Win10 immer auf Probleme, wie z. B. ein Einfrieren des Bildschirms und unscharfe Bildschirme. Zu diesem Zeitpunkt können wir das Problem lösen, indem wir die Directplay-Funktion aktivieren, und die Bedienungsmethode der Funktion ist ebenfalls sehr einfach. So installieren Sie DirectPlay, die alte Komponente von Win10 1. Geben Sie „Systemsteuerung“ in das Suchfeld ein und öffnen Sie es. 2. Wählen Sie große Symbole als Anzeigemethode. 3. Suchen Sie nach „Programme und Funktionen“. 4. Klicken Sie links, um oder zu aktivieren Win-Funktionen ausschalten 5. Wählen Sie hier die alte Version aus. Aktivieren Sie einfach das Kontrollkästchen

Die Sprachleiste ist eine wichtige Funktion in Windows, die es Benutzern ermöglicht, schnell zwischen Eingaben zu wechseln, anstatt die Tastenkombination + zu verwenden. Aber in manchen Fällen erscheint die Dock-Option in der Taskleiste in Windows 11 grau. Dieses Problem mit WindowsSpacebar scheint sehr häufig vorzukommen und es gibt keine Lösung. Wir haben versucht, die Spracheinstellungen zu ändern und den Inhalt neu zu konfigurieren, aber ohne Erfolg. Obwohl es uns schließlich gelang, die Grundursache und Lösung zu finden. Warum kann ich die Sprachleiste in der Taskleiste in Windows 11 nicht andocken? Sie haben nur eine Sprache installiert und die Sprachleiste funktioniert nur mit mehreren Sprachen. Die Sprache ist nicht korrekt installiert. Ein Fehler in Windows 11. Beschädigte Systemdateien oder Benutzerprofile. Wenn in W

Wussten Sie, dass Apple bestimmte Teile seiner Produkte in verschiedene Länder auslagert? Ja. Sie sind speziell für den Verkauf in diesen Ländern bestimmt und werden daher dort hergestellt. Möglicherweise haben Sie ein gebrauchtes iPhone/iPad von jemand anderem gekauft und fragen sich, ob Sie wissen können, aus welchem Land Ihr iPhone stammt. Ja, es gibt eine Möglichkeit, das herauszufinden, und wir werden jetzt in diesem Artikel mehr darüber sprechen. In diesem Artikel erfahren Sie, wie Sie mit einfachen Schritten das Herkunftsland Ihres iPhones ermitteln. So ermitteln Sie das Herkunftsland des iPhone Schritt 1: Tippen Sie zunächst auf das Symbol „Einstellungen“ auf dem Startbildschirm. Schritt 2: Hiermit öffnen Sie die App „Einstellungen“. Klicken Sie nach dem Öffnen darauf, um zur Option „Allgemein“ zu gelangen, wie unten gezeigt.

In iOS 17 und macOS Sonoma hat Apple neue Formatierungsoptionen für Apple Notes hinzugefügt, darunter Anführungszeichen und einen neuen Monostyle-Stil. Hier erfahren Sie, wie Sie sie verwenden. Mit zusätzlichen Formatierungsoptionen in Apple Notes können Sie Ihren Notizen jetzt Anführungszeichen hinzufügen. Das Format der Blockzitate erleichtert das visuelle Versetzen von Textabschnitten mithilfe der Anführungszeichenleiste links vom Text. Tippen/klicken Sie einfach auf die Formatschaltfläche „Aa“ und wählen Sie die Option „Blockzitat“ aus, bevor Sie etwas eingeben oder wenn Sie sich in der Zeile befinden, die Sie in ein Blockzitat umwandeln möchten. Diese Option gilt für alle Texttypen, Stiloptionen und Listen, einschließlich Checklisten. Im selben Menü „Format“ finden Sie die neue Option „Einzelstil“. Dies ist eine Überarbeitung der vorherigen „gleichbreiten“

Eine der nervigsten Änderungen, die wir Benutzer nie wollen, ist die Aufnahme von „Weitere Optionen anzeigen“ in das Kontextmenü mit der rechten Maustaste. Sie können es jedoch entfernen und erhalten das klassische Kontextmenü in Windows 11 zurück. Kein Mehrfachklicken und Suchen nach diesen ZIP-Verknüpfungen in Kontextmenüs mehr. Befolgen Sie diese Anleitung, um unter Windows 11 zu einem vollständigen Kontextmenü mit der rechten Maustaste zurückzukehren. Fix 1 – CLSID manuell anpassen Dies ist die einzige manuelle Methode auf unserer Liste. Sie müssen bestimmte Schlüssel oder Werte im Registrierungseditor anpassen, um dieses Problem zu beheben. Hinweis – Registrierungsänderungen wie diese sind sehr sicher und funktionieren problemlos. Daher sollten Sie eine Sicherung der Registrierung erstellen, bevor Sie dies auf Ihrem System versuchen. Schritt 1 – Probieren Sie es aus

Umgang mit Kontrollkästchen und Optionsfeldern in PHP-Formularen In der Webentwicklung sind Formulare eine der wichtigsten Möglichkeiten der Dateninteraktion zwischen Anwendungen und Benutzern. In Formularen müssen wir manchmal Kontrollkästchen und Optionsfelder verwenden, um Optionen auszuwählen. In diesem Artikel wird erläutert, wie Sie mit Kontrollkästchen und Optionsfeldern in PHP umgehen. 1. Kontrollkästchenverarbeitung In HTML können wir <inputtype="checkbox&qu" verwenden
