Eine kurze Diskussion über die alternative Methode von $refs in vue2 in der kombinierten API von vue3

Eine kurze Diskussion über die alternative Methode von $refs in vue2 in der kombinierten API von vue3

Wenn Sie Erfahrung in der Vue2-Projektentwicklung haben, sind Sie mit $refs vertraut. Wie verwende ich $refs in vue3, weil vue3 ein steiles Upgrade durchlaufen hat? Ich nehme an, Sie sind schon einmal auf ähnliche Probleme gestoßen. Ich habe die gleichen Zweifel. Über Suchmaschinen und GitHub können Sie die Verwendung von $refs grundsätzlich erlernen. Verwenden Sie in vue3 die Funktion „ref“ der kombinierten API, um die Anwendung statischer oder dynamischer HTML-Elemente zu ersetzen.

Vor kurzem habe ich in meiner Freizeit die Entwicklung des Vue3-Projekts „Crayon Management Template: Vue3 + Vuex4 + Ant Design2“ gelernt. Die Iteration wurde in den letzten zwei Tagen etwas vorangetrieben und die Diagrammkomponente wurde implementiert. Als ich den Artikel schrieb, stellte ich fest, dass im Commit des übermittelten Codes ein Tippfehler vorlag.

Bei Verwendung der setup()-Methode der kombinierten API in vue3 kann this.$refs nicht normal verwendet werden, aber die neue Funktion ref() kann verwendet werden.

Der folgende Code stammt von: https://github.com/QuintionTang/crayon/blob/feat-dashboard/src/qtui/components/Chart.vue

<Vorlage>
    <canvas ref="refChart" :height="setHeight"></canvas>
</Vorlage>
<Skript>
importiere { defineComponent, onMounted, ref, inject, watch } von "vue";
Diagramm aus „chart.js“ importieren;
importiere { deepCopy } von "@/helper/index";
exportiere StandarddefiniereKomponente({
    Name: "QtChart",
    Requisiten: {
        Typ: {
            Typ: Zeichenfolge,
            erforderlich: wahr,
            Standard: "Zeile",
        },
        Daten: {
            Typ: Objekt,
            erforderlich: wahr,
            Standard: () => ({}),
        },
        Optionen:
            Typ: Objekt,
            Standard: () => ({}),
        },
        Höhe:
            Typ: Nummer,
            Standard: 0,
        },
        Referenzschlüssel: {
            Typ: Zeichenfolge,
            Standard: null,
        },
    },
    setup(Requisiten) {
        const refChart = ref();
        // Initialisierungsmethode const init = () => {
            const canvasChart = refChart.value?.getContext("2d");
            const chartHelper = neues Diagramm(canvasChart, {
                Typ: Requisitentyp,
                Daten: deepCopy(props.data),
                Optionen: Requisiten.Optionen,
            });
            Uhr(Requisiten, () => {
                chartHelper.data = deepCopy(props.data);
                chartHelper.options = Eigenschaften.options;
                chartHelper.update();
            });
            // Eine Instanz an refChart anhängen
            refChart.value.instance = chartHelper;
        };
        // Höhe festlegen const setHeight = () => {
            zurückkehren {
                Höhe: Requisitenhöhe,
            };
        };
        // Binden Sie eine Instanz und verwenden Sie Inject const bindInstance = () => {
            wenn (Eigenschaften.RefKey) {
                const bind = inject(`bind[${props.refKey}]`);
                if (binden) {
                    binden(refChart.value);
                }
            }
        };
        beimMounted(() => {
            bindInstance();
            init();
        });
        zurückkehren {
            Referenzdiagramm,
            Höhe festlegen,
        };
    },
});
</Skript>

Dieser Code implementiert vollständig eine Diagrammkomponente „Chart“, in der die Eigenschaft „props“ angepasst wird und ihr Eigenschaftswert durch Übergeben von Parametern an die Setup-Methode verwendet wird. Definieren Sie ein ref="refChart" in HTML als Dom-Objekt des Diagramms. Verwenden Sie in der Setup-Methode die Ref-Methode, um ein responsives Variablenobjekt zu definieren und es als Rückgabewert am Ende der Setup-Funktion zu verwenden.

const refChart = ref();

Dabei ist zu beachten, dass der Attributname des Rückgabewertes mit dem Ref-Wert im HTML übereinstimmen muss.

Der folgende Code kann normal ausgeführt werden.

<Vorlage>
    <canvas ref="refChart" :height="setHeight"></canvas>
</Vorlage>
<Skript>
importiere { defineComponent, onMounted, ref, inject, watch } von "vue";
Diagramm aus „chart.js“ importieren;
importiere { deepCopy } von "@/helper/index";
exportiere StandarddefiniereKomponente({
    Name: "QtChart",
    Requisiten: {
        // ... 
    },
    setup(Requisiten) {
        const refChartBox = ref();
        // ...
        zurückkehren {
            refChart:refChartBox,
        };
    },
});
</Skript>

In den folgenden Situationen treten Programmfehler auf und die erwarteten Ergebnisse können nicht erzielt werden. Dies liegt daran, dass das im HTML definierte ref="refChart" nicht mit der vom Setup zurückgegebenen refChartBox übereinstimmt.

<Vorlage>
    <canvas ref="refChart" :height="setHeight"></canvas>
</Vorlage>
<Skript>
importiere { defineComponent, onMounted, ref, inject, watch } von "vue";
Diagramm aus „chart.js“ importieren;
importiere { deepCopy } von "@/helper/index";
exportiere StandarddefiniereKomponente({
    Name: "QtChart",
    Requisiten: {
        // ... 
    },
    setup(Requisiten) {
        const refChartBox = ref();
        // ...
        zurückkehren {
            refChartBox,
        };
    },
});
</Skript>

abschließend

Dieser Artikel stellt nur kurz die Verwendung der Ref-Methode vor, die zufällig im Projekt verwendet wird. In Zukunft werde ich weiter lernen, während ich das Projekt vorantreibe und mir Notizen mache.

Dies ist das Ende dieses Artikels über die alternative Methode von $refs in vue2 in der kombinatorischen API von vue3. Weitere relevante Inhalte zur kombinatorischen API von vue3 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:
  • Vue3+Skript-Setup+ts+Vite+Volar-Projekt
  • Vue3 basierend auf der Skript-Setup-Syntax $refs-Verwendung

<<:  So blockieren und verbieten Sie Webcrawler im Nginx-Server

>>:  So verschieben Sie den Datenspeicherort von mysql5.7.19 in Centos7

Artikel empfehlen

Mobile Frontend-Anpassungslösung (Zusammenfassung)

Ich habe online gesucht und festgestellt, dass in...

Detaillierte Analyse des Linux-NFS-Mechanismus anhand von Fällen

In Fortsetzung des vorherigen Artikels erstellen ...

Eine kurze Diskussion über bedingte Kodierung und Seitenlayout der VUE-Uni-App

Inhaltsverzeichnis Bedingte Kompilierung Seitenla...

Docker-Lösung zum Anmelden ohne Root-Rechte

Wenn Sie den Docker-Befehl zum ersten Mal verwend...

jQuery-Plugin zum Erzielen eines Code-Rain-Effekts

In diesem Artikel wird der spezifische Code des j...

JSONP-domänenübergreifende Simulation der Baidu-Suche

Inhaltsverzeichnis 1. Was ist JSONP 2. JSONP-Cros...

Implementierung des React-Konfigurations-Subroutings

1. Die Komponente First.js hat Unterkomponenten: ...

Detaillierte Erklärung der Tastaturereignisse von Vue

Inhaltsverzeichnis Allgemeine Schlüsselaliase Sch...

Häufig verwendete englische Schriftarten für die Webseitenerstellung

Arial Arial ist eine serifenlose TrueType-Schrifta...

Mysql Workbench - Abfragemethode für MySQL-Datenbanken

Mysql Workbench ist ein Open-Source-Datenbankclie...

Mysql kann keine nicht aggregierten Spalten auswählen

1. Einleitung Ich habe mein Blog kürzlich aktuali...