Heim Web-Frontend js-Tutorial Diskussion über Beispiele für die Ladereihenfolge von Vue

Diskussion über Beispiele für die Ladereihenfolge von Vue

Jan 22, 2018 am 09:53 AM
实例 探讨 Befehl

Dieser Artikel führt hauptsächlich in die Diskussion der Ladereihenfolge von Vue ein, stellt die Ladereihenfolge im Detail vor und zeigt, wie beurteilt werden kann, ob alle Unterkomponenten geladen sind. Der Herausgeber findet es ziemlich gut, daher möchte ich es jetzt mit Ihnen teilen und als Referenz dienen. Folgen wir dem Herausgeber und schauen wir uns das an. Ich hoffe, es kann allen helfen.

Wenn in Vuejs Version 1.0 übergeordnete und untergeordnete Komponenten zusammenarbeiten, weist ihre Lebenszyklusausführung die folgenden Merkmale auf:

1. Erstellt wird immer zuerst erstellt, dann übergeordnete

Die erstellte Lebenszyklusfunktion wird immer in der Reihenfolge vom Elternteil zum Kind ausgeführt, aber die Brüder halten sich nicht strikt an diese Reihenfolge. Es wird geschätzt, dass eine asynchrone Funktion verwendet wird. Darüber hinaus wird die Einfügereihenfolge der untergeordneten Komponenten verwendet Die übergeordnete Komponente ist ebenfalls zufällig. Ja, es gibt keine spezielle Regel. Gehen Sie davon aus, dass die Referenzreihenfolge der untergeordneten Komponenten wie folgt lautet:

<p class="container">
 <child-c1 v-ref:child1></child-c1>
 <child-c2 v-ref:child2></child-c2>
</p>
Nach dem Login kopieren

Wenn die Referenz $children verwendet wird, um alle untergeordneten Komponenten abzurufen, steht „child-c1“ nicht immer an der ersten Position, wie folgt:

 // 大多数时候判断会失败
 if(this.$children[0] === this.$refs.child1) {
  // 这里的代码很可能得不到执行机会
 }
Nach dem Login kopieren

2. Die Reihenfolge der Bereitschaft ist verwirrender

Nach meiner Einschätzung sollte die Reihenfolge der Bereitschaft der Eltern- und Kinderkomponenten zuerst Sohn und dann Eltern sein, um sicherzustellen dass die Komponente vollständig geladen ist, aber aus praktischen Beispielen geht hervor, dass „ready“ überhaupt keine Reihenfolge hat. Manchmal wird die übergeordnete Komponente zuerst geladen, und manchmal wird die untergeordnete Komponente zuerst geladen, sodass Sie sich in der Programmierpraxis nicht auf deren Ladereihenfolge verlassen dürfen .

3. Fazit

Wenn Sie in der Praxis sicherstellen müssen, dass Komponenten nacheinander geladen werden, dürfen Sie sich weder auf die Lebensreihenfolge der Komponenten noch auf den Bereitschaftslebenszyklus der übergeordneten und untergeordneten Komponenten verlassen .

So beurteilen Sie, ob alle Unterkomponenten geladen sind

Bei der gemeinsamen Verwendung von übergeordneten und untergeordneten Komponenten, insbesondere wenn Konfigurationsinformationen von Geschäftsinformationen getrennt sind, müssen wir häufig Nach dem Unter -Komponente geladen wird, werden die zugehörigen Dienste der übergeordneten Komponente ausgeführt. Nehmen Sie die folgende Komponentenstruktur als Beispiel:

 <jq-grid :url="url" col-size="5" :sub-grid="true" ref="accountGrid" :on-ready="initGrid" :query="queryParams">
 <jq-col label="账号" name="username" width="75" :sortable="true"></jq-col>
 <jq-col label="用户名称" name="remarkName" width="75" :sortable="true"></jq-col>
 <jq-col label="创建时间" name="createTime" width="90">
 </jq-col>
</jq-grid>
Nach dem Login kopieren

Im obigen Beispiel müssen wir die Konfigurationsinformationen der Unterkomponente kombinieren Daher können die kombinierten Konfigurationsinformationen erst nach dem Laden aller Unterkomponenten korrekt und vollständig sein.

Wenn Sie also das Mounted-Ereignis direkt verwenden (Ready-Ereignis in 1.0), erhalten Sie definitiv falsche Ergebnisse. Um dieses Problem zu lösen, können wir genauso gut die folgende Datenstruktur und Methode erstellen:

props : {
 colSize : {
  type : Number,
  default : 1
 }
}

data () {
 return {
  // 用于获取所有的子组件配置信息
  colModel : [],
  readySize : 0
 }
},

methods : {
 /**
  * 由子组件在加载完成时调用
  */
 addColModel () {
   this.readySize ++
   // 检查进度是否设置的colSize一致
   if(this.readySize == this.colSize) {
   // 这时候所有的子组件已加载完成
   } 
 }
}
Nach dem Login kopieren

Indem wir das Konfigurationselement „colSize“ festlegen und die von der Unterkomponente aufgerufene Methode „addColModel“ überprüfen, können wir den Zeitpunkt bestimmen, zu dem alle Unterkomponenten geladen werden (die übergeordnete Komponente kann es sein oder auch nicht). zu diesem Zeitpunkt geladen), um die erforderlichen Sortiervorgänge für Konfigurationsinformationen durchzuführen.

Aber in tatsächlichen Anwendungen haben wir festgestellt, dass bei einer großen Anzahl von Unterkomponenten ein anderes Phänomen auftritt. Die Ladereihenfolge der Unterkomponenten ist zufällig Im Einklang mit der Konfigurationsreihenfolge können wir der Unterkomponente das Attribut „Reihenfolge“ wie folgt hinzufügen:

<jq-grid :url="url" col-size="8" :sub-grid="true" ref="hostGrid" :on-ready="initGrid" :query="queryParams">
 <jq-col order="1" label="名称" name="hostName" width="75" :sortable="true" ></jq-col>
 <jq-col order="2" label="主机型号" name="model" width="60" :sortable="true"></jq-col>
 <jq-col order="3" label="生产厂商" name="vendor" width="60" :sortable="true"></jq-col>
</jqgrid>
Nach dem Login kopieren

Nach dieser Verarbeitung können wir alle Unterkomponenten nacheinander sortieren geladen, wie folgt:

// 由于Vue无法确定子元素的加载顺序,必须手动指定order
this.colModel.sort((a, b) => a.order - b.order)
Nach dem Login kopieren

Fazit

Durch manuelles Hinzufügen von Hilfsvariablen und Methoden können Sie den Moment ermitteln, in dem die Unterkomponente geladen wird, um integrierte Operationen auszuführen.

Verwandte Empfehlungen:

Detaillierte Erläuterung der Ladereihenfolge und des Ausführungsprinzips von Hochleistungs-Javascript

Eine kurze Analyse des Ladens und der Ladesequenz von CSS

HTML-, CSS- und JS-Dateiladesequenz und Ausführungsstatus

Das obige ist der detaillierte Inhalt vonDiskussion über Beispiele für die Ladereihenfolge von Vue. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

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

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

SVM-Beispiele in Python SVM-Beispiele in Python Jun 11, 2023 pm 08:42 PM

Support Vector Machine (SVM) in Python ist ein leistungsstarker überwachter Lernalgorithmus, der zur Lösung von Klassifizierungs- und Regressionsproblemen verwendet werden kann. SVM eignet sich gut für den Umgang mit hochdimensionalen Daten und nichtlinearen Problemen und wird häufig in den Bereichen Data Mining, Bildklassifizierung, Textklassifizierung, Bioinformatik und anderen Bereichen eingesetzt. In diesem Artikel stellen wir ein Beispiel für die Verwendung von SVM zur Klassifizierung in Python vor. Wir werden das SVM-Modell aus der scikit-learn-Bibliothek verwenden

VUE3-Erste-Schritte-Beispiel: Erstellen eines einfachen Videoplayers VUE3-Erste-Schritte-Beispiel: Erstellen eines einfachen Videoplayers Jun 15, 2023 pm 09:42 PM

Da die neue Generation von Front-End-Frameworks weiter auf dem Vormarsch ist, erfreut sich VUE3 als schnelles, flexibles und benutzerfreundliches Front-End-Framework großer Beliebtheit. Als Nächstes lernen wir die Grundlagen von VUE3 kennen und erstellen einen einfachen Videoplayer. 1. VUE3 installieren Zuerst müssen wir VUE3 lokal installieren. Öffnen Sie das Befehlszeilentool und führen Sie den folgenden Befehl aus: npminstallvue@next Erstellen Sie dann eine neue HTML-Datei und führen Sie VUE3 ein: &lt;!doctypehtml&gt;

Erfahren Sie Best-Practice-Beispiele für die Zeigerkonvertierung in Golang Erfahren Sie Best-Practice-Beispiele für die Zeigerkonvertierung in Golang Feb 24, 2024 pm 03:51 PM

Golang ist eine leistungsstarke und effiziente Programmiersprache, mit der sich verschiedene Anwendungen und Dienste entwickeln lassen. In Golang sind Zeiger ein sehr wichtiges Konzept, das uns helfen kann, Daten flexibler und effizienter zu verwalten. Die Zeigerkonvertierung bezieht sich auf den Prozess der Zeigeroperation zwischen verschiedenen Typen. In diesem Artikel werden anhand konkreter Beispiele die Best Practices der Zeigerkonvertierung in Golang erläutert. 1. Grundkonzepte In Golang hat jede Variable eine Adresse, und die Adresse ist der Speicherort der Variablen im Speicher.

Beispiel für die Entwicklung eines einfachen PHP-Webcrawlers Beispiel für die Entwicklung eines einfachen PHP-Webcrawlers Jun 13, 2023 pm 06:54 PM

Mit der rasanten Entwicklung des Internets sind Daten zu einer der wichtigsten Ressourcen im heutigen Informationszeitalter geworden. Als Technologie zur automatischen Erfassung und Verarbeitung von Netzwerkdaten erregen Webcrawler immer mehr Aufmerksamkeit und Anwendung. In diesem Artikel wird erläutert, wie Sie mit PHP einen einfachen Webcrawler entwickeln und die Funktion zum automatischen Abrufen von Netzwerkdaten realisieren. 1. Überblick über Web Crawler Web Crawler ist eine Technologie, die automatisch Netzwerkressourcen abruft und verarbeitet. Ihr Hauptarbeitsprozess besteht darin, das Browserverhalten zu simulieren, automatisch auf bestimmte URL-Adressen zuzugreifen und alle Informationen zu extrahieren.

Tiefer Einblick: Was ist das Django-Framework? Tiefer Einblick: Was ist das Django-Framework? Jan 19, 2024 am 09:23 AM

Das Django-Framework ist ein Python-Framework für Webanwendungen, das eine einfache und leistungsstarke Möglichkeit zum Erstellen von Webanwendungen bietet. Tatsächlich hat sich Django zu einem der beliebtesten Python-Webentwicklungs-Frameworks entwickelt und ist für viele Unternehmen, darunter Instagram und Pinterest, zur ersten Wahl geworden. Dieser Artikel befasst sich mit dem Django-Framework, einschließlich grundlegender Konzepte und wichtiger Komponenten sowie spezifischer Codebeispiele. Django-GrundkonzepteDjan

Die Beziehung zwischen der Anzahl der Oracle-Instanzen und der Datenbankleistung Die Beziehung zwischen der Anzahl der Oracle-Instanzen und der Datenbankleistung Mar 08, 2024 am 09:27 AM

Die Beziehung zwischen der Anzahl der Oracle-Instanzen und der Datenbankleistung Oracle-Datenbank ist eines der bekanntesten relationalen Datenbankverwaltungssysteme in der Branche und wird häufig für die Datenspeicherung und -verwaltung auf Unternehmensebene verwendet. In Oracle-Datenbanken ist die Instanz ein sehr wichtiges Konzept. Instanz bezieht sich auf die laufende Umgebung der Oracle-Datenbank im Speicher. Jede Instanz verfügt über eine unabhängige Speicherstruktur und einen Hintergrundprozess, der zur Verarbeitung von Benutzeranforderungen und zur Verwaltung von Datenbankvorgängen verwendet wird. Die Anzahl der Instanzen hat einen wichtigen Einfluss auf die Leistung und Stabilität der Oracle-Datenbank.

Beispiele für die Verwendung von Verifizierungscodes im Gin-Framework Beispiele für die Verwendung von Verifizierungscodes im Gin-Framework Jun 23, 2023 am 08:10 AM

Mit der Popularität des Internets sind Verifizierungscodes zu einem notwendigen Prozess für die Anmeldung, Registrierung, das Abrufen von Passwörtern und andere Vorgänge geworden. Im Gin-Framework ist die Implementierung der Verifizierungscode-Funktion extrem einfach geworden. In diesem Artikel wird erläutert, wie eine Bibliothek eines Drittanbieters zum Implementieren der Verifizierungscodefunktion im Gin-Framework verwendet wird, und es wird Beispielcode als Referenz für die Leser bereitgestellt. 1. Abhängige Bibliotheken installieren Bevor wir den Bestätigungscode verwenden können, müssen wir die Bibliothek goCaptcha eines Drittanbieters installieren. Um goCaptcha zu installieren, können Sie den goget-Befehl verwenden: $goget-ugithub

Ein tiefer Einblick in gängige Sonderzeichen unter Linux Ein tiefer Einblick in gängige Sonderzeichen unter Linux Mar 14, 2024 pm 02:54 PM

Als häufig verwendetes Open-Source-Betriebssystem verfügt das Linux-Betriebssystem über starke Anpassbarkeit und Flexibilität. Bei der Nutzung von Linux-Systemen stoßen wir häufig auf die Verarbeitung verschiedener Sonderzeichen. Diese Sonderzeichen haben in der Befehlszeile eine besondere Bedeutung und können viele erweiterte Funktionen implementieren. Dieser Artikel befasst sich mit den gängigen Sonderzeichen unter Linux und stellt deren Verwendung anhand konkreter Codebeispiele im Detail vor. Platzhalter: Platzhalter sind Sonderzeichen, die zum Zuordnen von Dateinamen verwendet werden. Zu den üblichen Platzhaltern gehören *,?, [] usw. Hier sind mehrere

See all articles