1. EinrichtungKombinations-API:
1. Der erste Parameter in der Setup-Funktion — props Standard exportieren { Requisiten: { Titel: Zeichenfolge }, setup(Requisiten) { console.log(Eigenschaften.Titel) } } Da importiere { toRefs } von 'vue' setup(Requisiten) { const { Titel } = toRefs(Eigenschaften) console.log(Titel.Wert) } 2. Kontext
xport Standard { setup(Eigenschaften, Kontext) { // Attribut (nicht reagierendes Objekt) konsole.log(Kontext.attrs) // Slot (nicht reagierendes Objekt) Konsole.log(Kontext.Slots) // Ereignis auslösen (Methode) Konsole.log(Kontext.emit) } }
Standard exportieren { setup(Eigenschaften, { Attribute, Steckplätze, emittieren }) { ... } } 2. Rückgabewert der Setup-Funktion1. Der Rückgabewert der Setup-Funktion - Objekt Wenn <Vorlage> <!-- Es wird bei Verwendung in der Vorlage automatisch entpackt, daher ist .value nicht erforderlich --> <div>{{ LeserAnzahl }} {{ Buch.Titel }}</div> </Vorlage> <Skript> importiere { ref, reaktiv } von 'vue' Standard exportieren { aufstellen() { const Leserzahl = ref(0) const book = reactive({ Titel: 'Vue 3-Handbuch' }) // der Vorlage aussetzen zurückkehren { LeserAnzahl, Buch } } } </Skript> Hinweis: Vom Setup zurückgegebene Verweise werden beim Zugriff in Vorlagen automatisch entpackt. Sie sollten in Vorlagen daher nicht .value verwenden. 3. Reaktionsfähiges System-API1. reaktiv const obj = reaktiv({ Anzahl: 0 }) Responsive Transformationen sind „tief“: Sie wirken sich auf alle verschachtelten Eigenschaften innerhalb des Objekts aus. Basierend auf der ES2015-Proxy-Implementierung ist das zurückgegebene Proxy-Objekt nicht identisch mit dem Originalobjekt. Es wird empfohlen, nur Proxy-Objekte zu verwenden und sich nicht auf die Originalobjekte zu verlassen. <Vorlage> <div id="app">{ Status.Anzahl }</div> </Vorlage> <Skript> importiere { reaktiv } von 'vue' Standard exportieren { aufstellen() { // Status ist jetzt ein reaktiver Status const state = reactive({ Anzahl: 0, }) } } </Skript> 2. Referenz Akzeptiert einen Wert und gibt ein reaktionsfähiges, veränderbares Konstante Anzahl = ref(0) console.log(Anzahl.Wert) // 0 Anzahl.Wert++ konsole.log(Anzahl.Wert) // 1 Wenn Zugriff in Vorlage: Wenn <Vorlage> <div>{{ Anzahl }}</div> </Vorlage> <Skript> Standard exportieren { aufstellen() { zurückkehren { Anzahl: ref(0), } }, } </Skript> Zugriff als Eigenschaft eines responsiven Objekts: Wenn auf ref als Konstante Anzahl = ref(0) const state = reaktiv({ zählen, }) konsole.log(status.anzahl) // 0 Zustandsanzahl = 1 konsole.log(Anzahl.Wert) // 1 Hinweis: Wenn Sie einer vorhandenen const andereAnzahl = ref(2) Zustand.Anzahl = andereAnzahl konsole.log(status.anzahl) // 2 konsole.log(Anzahl.Wert) // 1 Hinweis: const arr = reaktiv([ref(0)]) // Hier wird .value benötigt Konsole.log(arr[0].Wert) const map = reaktiv(neue Map([['foo', ref(0)]])) // Hier wird .value benötigt Konsole.log(Karte.get('foo').Wert) Typdefinitionen: Schnittstelle Ref<T> { Wert: T } Funktion ref<T>(Wert: T): Ref<T> Manchmal müssen wir möglicherweise eine komplexere Typannotation für const foo = ref<string | number>('foo') // Typ von foo: Ref<string | number> foo.value = 123 // Bestanden! 3. berechnet Es gibt zwei Möglichkeiten, die reaktionsfähige (1) Übergeben Sie eine Konstante Anzahl = ref(1) const plusOne = berechnet(() => Anzahl.Wert + 1) konsole.log(plusEins.Wert) // 2 plusOne.value++ // Fehler! (2) Übergeben Sie ein Objekt mit Konstante Anzahl = ref(1) const plusOne = berechnet({ bekomme: () => Anzahl.Wert + 1, setzen: (Wert) => { Anzahl.Wert = Wert - 1 }, }) plusEins.Wert = 1 konsole.log(Anzahl.Wert) // 0 Typdefinitionen: // schreibgeschützte Funktion computed<T>(getter: () => T): Readonly<Ref<Readonly<T>>> // Modifizierbare Funktion computed<T>(options: { erhalten: () => T set: (Wert: T) => void }): Ref<T> 4. schreibgeschützt Übergeben Sie ein Objekt (responsive oder normal) oder const original = reaktiv({Anzahl: 0}) const Kopie = schreibgeschützt (Original) UhrEffekt(() => { // Abhängigkeitsverfolgung console.log(copy.count) }) // Änderungen am Original lösen Listener für die Kopie aus original.count++ // Kopie kann nicht geändert werden und es erfolgt eine Warnung: copy.count++ // Warnung! 5. UhreffektFührt eine übergebene Funktion sofort aus, verfolgt reaktiv ihre Abhängigkeiten und führt die Funktion erneut aus, wenn sich ihre Abhängigkeiten ändern. Konstante Anzahl = ref(0) watchEffect(() => konsole.log(Anzahl.Wert)) //-> 0 ausgeben setzeTimeout(() => { Anzahl.Wert++ //-> 1 ausdrucken }, 100) 5.1 Hören Sie nicht mehr zu Wenn In manchen Fällen können Sie den Rückgabewert auch explizit aufrufen, um das Abhören zu beenden: const stop = Uhreffekt(() => { /* … */ }) // Dann stop() 5.2 Beseitigung von Nebenwirkungen Manchmal führt eine Nebeneffektfunktion einige asynchrone Nebeneffekte aus, die bereinigt werden müssen, wenn sie ungültig sind (d. h. der Status hat sich geändert, bevor sie abgeschlossen ist). Daher kann die vom Listening-Nebeneffekt übergebene Funktion eine
watchEffect((beiUngültigkeit) => { Konstantes Token = performAsyncOperation(ID.Wert) beiUngültig(() => { // Wenn sich die ID ändert oder nicht mehr zuhört // Den vorherigen asynchronen Vorgang abbrechen token.cancel() }) }) Der Grund, warum wir den Ungültigkeitsrückruf durch Übergeben einer Funktion registrieren, anstatt ihn vom Rückruf zurückzugeben (wie in Bei der Durchführung von Datenanforderungen ist die Nebeneffektfunktion häufig eine asynchrone Funktion: const data = ref(null) UhrEffekt(async () => { data.value = warte auf fetchData(props.id) }) Wir wissen, dass asynchrone Funktionen implizit ein 5.3 Aktualisierungszeitpunkt für Nebeneffekte Das reaktionsfähige System von <Vorlage> <div>{{ Anzahl }}</div> </Vorlage> <Skript> Standard exportieren { aufstellen() { Konstante Anzahl = ref(0) UhrEffekt(() => { Konsole.log(Anzahl.Wert) }) zurückkehren { zählen, } }, } </Skript> In diesem Beispiel: Bitte beachten Sie: Der Initialisierungslauf wird ausgeführt, bevor die Komponente beimMounted(() => { UhrEffekt(() => { // Sie können hier auf DOM- oder Vorlagenreferenzen zugreifen }) }) Wenn der Nebeneffekt synchron oder vor der Aktualisierung der Komponente erneut ausgeführt werden muss, können wir als Optionen ein Objekt mit einer Flush-Eigenschaft übergeben (standardmäßig „ // watchEffect synchron ausführen( () => { /* … */ }, { leeren: 'synchronisieren', } ) // watchEffect ausführen( () => { /* … */ }, { Spülen: 'vor', } ) 5.4 Listener-Debugging Mit
Beide Rückrufe erhalten ein Debuggerereignis mit Informationen zu den Abhängigkeiten. Es wird empfohlen, in den folgenden Rückrufen Debugger-Anweisungen zu schreiben, um Abhängigkeiten zu überprüfen: UhrEffekt( () => { /* Nebenwirkungen */ }, { beiTrigger(e) { Debugger }, } )
Typdefinitionen: Funktion watchEffect( Wirkung: (onInvalidate: InvalidateCbRegistrator) => ungültig, Optionen?: WatchEffectOptions ): Stoppgriff Schnittstelle WatchEffectOptions { leeren?: ,pre‘ | ,post‘ | ,sync‘ onTrack?: (Ereignis: DebuggerEvent) => void beiTrigger?: (Ereignis: DebuggerEvent) => void } Schnittstelle DebuggerEvent { Effekt: Reaktiver Effekt Ziel: beliebig Typ: Operationstypen Schlüssel: Zeichenfolge | Symbol | undefiniert } Typ InvalidateCbRegistrator = (ungültig machen: () => void) => void Typ StopHandle = () => void 6. Uhr
// Auf einen Getter hören const state = reaktiv({Anzahl: 0}) betrachten( () => Status.Anzahl, (Anzahl, vorherigeAnzahl) => { /* … */ } ) // Hören Sie einem Schiedsrichter direkt zu Konstante Anzahl = ref(0) beobachten(Anzahl, (Anzahl, vorherigeAnzahl) => { /* … */ }) 6.1 Mehrere Datenquellen abhören beobachten([fooRef, barRef], ([foo, bar], [vorherigeFoo, vorherigeBar]) => { /* … */ }) 6.2 Mit watchEffect geteilte Verhaltensweisen Typdefinitionen: // Auf eine einzelne Datenquellenfunktion hören watch<T>( Quelle: WatcherSource<T>, Rückruf: Wert: T, alterWert: T, bei Ungültigkeitserklärung: InvalidateCbRegistrator ) => ungültig, Optionen?: WatchOptions ): Stoppgriff // Auf mehrere Datenquellen hören Funktion watch<T extends WatcherSource<unknown>[]>( Quellen: T Rückruf: Werte: MapSources<T>, alteWerte: MapSources<T>, bei Ungültigkeitserklärung: InvalidateCbRegistrator ) => ungültig, Optionen? : WatchOptions ): Stoppgriff Typ WatcherSource<T> = Ref<T> | (() => T) Typ MapSources<T> = { [K in keyof T]: T[K] erweitert WatcherSource<infer V> ? V : nie } // Allgemeine Eigenschaften finden Sie in der Typdefinition von „watchEffect“. Schnittstelle WatchOptions extends WatchEffectOptions { sofort?: boolesch // Standard: false tief?: Boolesch } Dies ist das Ende dieses Artikels über den Schnellstart der Vue3-Dokumentenorganisation. Weitere relevante Inhalte zur Vue3-Dokumentenorganisation finden Sie in den vorherigen Artikeln von 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird! Das könnte Sie auch interessieren:
|
>>: Beschreiben Sie kurz die MySQL InnoDB-Speicher-Engine
In diesem Artikelbeispiel wird der spezifische Ja...
In diesem Artikel wird der spezifische Code von V...
FOUC steht für Flash of Unstyled Content, abgekürz...
Inhaltsverzeichnis 1. Einleitung 2. Szenario 3. S...
Die wichtigsten Protokolle im MySQL-Protokollsyst...
Dieser Artikel beschreibt anhand von Beispielen d...
1. HTML-Bild <img> 1. Das <img>-Tag u...
Das spezifische upgrade -Skript lautet wie folgt:...
Auf die Vorteile von Typescript müssen wir nicht ...
1. Rasterlayout (Raster): Es unterteilt die Webse...
Ich wurde am frühen Morgen durch einen Anruf gewe...
BackUpMysql.sh-Skript #!/bin/bash PATH=/bin:/sbin...
HTML-Tags zur Textformatierung 標簽 描述 <b> 定義...
„Entwicklung ist mehr als nur Code schreiben“ stam...
In diesem Artikel wird hauptsächlich erläutert, w...