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

Grafisches Tutorial zur Installation und Konfiguration von Mysql WorkBench

In diesem Artikel erfahren Sie mehr über die Inst...

Linux verwendet den Binärmodus zur Installation von MySQL

In diesem Artikel werden die einzelnen Schritte z...

Detaillierte Erklärung des Ungültigkeitsprozesses des VUE-Tokens

Inhaltsverzeichnis Ziel Gedankenanalyse Code-Land...

Über das Vue Virtual Dom-Problem

Inhaltsverzeichnis 1. Was ist virtueller Dom? 2. ...

Einführung in HTML_PowerNode Java Academy

Was ist HTML? HTML ist eine Sprache zur Beschreib...

Lösung für das Problem des MySQL-Threads beim Öffnen von Tabellen

Problembeschreibung Vor kurzem gab es einen MySQL...

Uniapp WeChat-Applet: Lösung bei Schlüsselfehler

Uniapp-Code <Vorlage> <Ansicht> <i...

react-beautiful-dnd implementiert die Drag-and-Drop-Funktion für Komponenten

Inhaltsverzeichnis 1. Installation 2.API 3. reagi...

Code zum Anzeigen des Inhalts eines TXT-Buchs auf einer Webseite

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML ...

So erstellen Sie eine Liste in CocosCreator

CocosCreator-Version: 2.3.4 Cocos hat keine Liste...

Details und Beispielcode der MySQL-Replikationstabelle

Detaillierte Erklärung der MySQL-Replikationstabe...

Analyse gängiger Anwendungsbeispiele von MySQL-Prozessfunktionen

Dieser Artikel veranschaulicht anhand von Beispie...