Heim Web-Frontend View.js Bereitstellung und Injektion von Funktionen in Vue3: effiziente Datenübertragung zwischen Komponenten

Bereitstellung und Injektion von Funktionen in Vue3: effiziente Datenübertragung zwischen Komponenten

Jun 18, 2023 pm 08:45 PM
vue provide inject

Die Bereitstellungs- und Injektionsfunktionen in Vue3 sind zur bevorzugten Lösung für eine effiziente Datenübertragung zwischen Komponenten geworden. Sie verwenden einen neuen Mechanismus, der es untergeordneten Komponenten ermöglicht, Daten in Vorgängerkomponenten abzurufen und gleichzeitig Daten in Vorgängerkomponenten in übergeordneten Komponenten zu aktualisieren, was unbegrenzte Möglichkeiten für die Erstellung komplexer und flexibler Anwendungen bietet. In diesem Artikel werden die Bereitstellungs- und Injektionsfunktionen in Vue3 ausführlich erläutert, um den Lesern ein besseres Verständnis ihrer Arbeitsprinzipien und Verwendung zu ermöglichen.

  1. Was sind Bereitstellungs- und Injektionsfunktionen?

Die Provide- und Inject-Funktionen sind neue Funktionen in Vue3. Sie bieten eine andere Datenübertragungsmethode als Props und $emit. Die Bereitstellungsfunktion wird zum Bereitstellen von Daten und die Injektionsfunktion zum Einfügen von Daten verwendet. Die Bereitstellungsfunktion empfängt ein Objekt als Parameter, das die Daten enthält, die der untergeordneten Komponente bereitgestellt werden müssen. Die Injektionsfunktion empfängt ein Array oder Objekt als Parameter. Dieses Array oder Objekt enthält die Daten, die von der Vorgängerkomponente eingefügt werden müssen. Es ist zu beachten, dass die Funktionen „Provide“ und „Inject“ nur Daten zwischen derselben Vorgängerkomponente und untergeordneten Komponenten und nicht zwischen Komponenten übertragen können.

  1. So funktionieren die Bereitstellungs- und Injektionsfunktionen

In Vue3 verwenden die Bereitstellungs- und Injektionsfunktionen einen neuen Mechanismus, um die Datenübertragung zu erreichen. Dieser Mechanismus basiert auf der benutzerdefinierten Renderfunktion von Vue, die die Verwendung der neuen Kontext-API zum Bereitstellen und Einfügen von Daten ermöglicht.

In der Bereitstellungsfunktion können wir Daten bereitstellen, indem wir das Bereitstellungsattribut festlegen, zum Beispiel:

const app = createApp({
  provide: {
    data: 'this is data'
  }
})
Nach dem Login kopieren

In diesem Beispiel stellen wir Daten in der Stammkomponente mit dem Namen Daten bereit und ihr Wert ist „Dies sind Daten“. Als nächstes können wir die Inject-Funktion in der Unterkomponente verwenden, um diese Daten einzufügen:

const childComponent = {
  inject: ['data'],
  mounted() {
    console.log(this.data)//输出'this is data'
  }
}
Nach dem Login kopieren

In der Unterkomponente injizieren wir Daten über das Inject-Attribut. Dieses Attribut muss den Namen der Daten enthalten, die injiziert werden müssen. Hier fügen wir den Namen der Daten ein. In der untergeordneten Komponente können wir wie Requisiten auf die injizierten Daten zugreifen.

Es ist zu beachten, dass die injizierten Daten undefiniert sind, wenn die Injektionsfunktion in einer untergeordneten Komponente verwendet wird, die Bereitstellungsfunktion jedoch nicht die Daten bereitstellt, die injiziert werden müssen.

  1. So verwenden Sie die Provide- und Inject-Funktionen

Bei der Verwendung der Provide- und Inject-Funktionen müssen wir auf die folgenden Punkte achten:

(1) Die Provide- und Inject-Funktionen können nur zwischen demselben Vorfahren weitergegeben werden Komponente und untergeordnete Komponenten Daten können nicht über Komponenten hinweg weitergegeben werden.

(2) Die in der Bereitstellungsfunktion bereitgestellten Daten können beliebigen Typs sein, einschließlich Funktionen, Objekten usw.

(3) Die mit der Injektionsfunktion injizierten Daten sind standardmäßig schreibgeschützt, d. h. die Daten in der Vorgängerkomponente können in der untergeordneten Komponente nicht geändert werden. Wenn Sie die Daten in der Vorgängerkomponente ändern möchten, müssen Sie eine Methode in der Vorgängerkomponente bereitstellen und die Methode in der untergeordneten Komponente aufrufen, um die Daten zu aktualisieren.

(4) Bei der Implementierung der Bereitstellungs- und Injektionsfunktionen können wir den Symboltyp zum Bereitstellen oder Einfügen von Daten verwenden, wodurch verhindert werden kann, dass die Daten versehentlich geändert werden.

(5) Wenn wir Provide zum Bereitstellen von Daten verwenden, können wir die Ref- oder Reactive-Funktion in der Setup-Funktion verwenden, um reaktionsfähige Daten zu erstellen, sodass die Daten direkt in der Unterkomponente verwendet werden können und automatisch auf Datenänderungen reagiert werden können.

Das Folgende ist ein vollständiger Anwendungsfall, der eine einfache TodoList implementiert und die Bereitstellungs- und Injektionsfunktionen zum Übertragen von Daten verwendet:

const todoListProvide = {
  todos: ref([
    { id: 1, text: 'todo 1', done: false },
    { id: 2, text: 'todo 2', done: true },
    { id: 3, text: 'todo 3', done: false }
  ]),
  addTodo (text) {
    this.todos.push({
      id: this.todos.length + 1,
      text: text,
      done: false
    })
  }
}

const todoItemInject = ['todos']

const TodoItem = {
  inject: todoItemInject,
  props: {
    todo: {
      type: Object,
      required: true
    }
  },
  methods: {
    toggleTodo () {
      this.todo.done = !this.todo.done
    }
  },
  template: `
    <li>
      {{ todo.text }}
      <button @click="toggleTodo">{{ todo.done ? 'Undo' : 'Done' }}</button>
    </li>
  `
}

const TodoList = {
  provide: todoListProvide,
  components: {
    TodoItem
  },
  setup() {
    const newTodo = ref('')
    const addTodo = () => {
      if (newTodo.value.trim() !== '') {
        todoListProvide.addTodo.call(todoListProvide, newTodo.value)
        newTodo.value = ''
      }
    }
    return {
      newTodo,
      addTodo
    }
  },
  template: `
    <div>
      <ul>
        <todo-item v-for="todo in todos" :key="todo.id" :todo="todo"/>
      </ul>
      <div>
        <input type="text" v-model="newTodo">
        <button @click="addTodo">Add Todo</button>
      </div>
    </div>
  `
}

createApp({
  components: {
    TodoList
  },
  template: `
    <todo-list></todo-list>
  `
}).mount('#app')
Nach dem Login kopieren

In diesem Fall definieren wir eine TodoList-Komponente und verwenden sie in dieser Komponente. Die Bereitstellungsfunktion stellt zwei Daten bereit für die todos- und addTodo-Methoden. Unter diesen ist todos ein reaktionsfähiges Array, das zum Speichern aller To-do-Informationen verwendet wird, und die addTodo-Methode wird zum Hinzufügen neuer To-dos verwendet. In der Unterkomponente TodoItem verwenden wir die Funktion inject, um Aufgabendaten einzufügen, und verwenden das Attribut props, um die übergebenen Aufgabendaten zu empfangen. In dieser Komponente definieren wir die toggleTodo-Methode, um den erledigten Status in todo zu aktualisieren, und verwenden dann den todo-Text, die erledigten Attribute und die toggleTodo-Methode in der Vorlage. Schließlich erstellen wir eine Root-Komponente und fügen die TodoList zum Rendern in die Root-Komponente ein.

Durch die Demonstration dieses Falles können wir sehen, wie wir die Bereitstellungs- und Injektionsfunktionen verwenden, um eine effiziente Datenübertragung zwischen Komponenten zu erreichen. Unabhängig davon, ob wir einfache kleine Komponenten entwickeln oder komplexe und flexible Anwendungen erstellen, können wir mithilfe der Bereitstellungs- und Injektionsfunktionen Komponenten besser organisieren und die Entwicklungseffizienz verbessern.

Das obige ist der detaillierte Inhalt vonBereitstellung und Injektion von Funktionen in Vue3: effiziente Datenübertragung zwischen Komponenten. 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

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
Will R.E.P.O. Crossplay haben?
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌

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)

So fügen Sie Funktionen zu Schaltflächen für Vue hinzu So fügen Sie Funktionen zu Schaltflächen für Vue hinzu Apr 08, 2025 am 08:51 AM

Sie können der VUE -Taste eine Funktion hinzufügen, indem Sie die Taste in der HTML -Vorlage an eine Methode binden. Definieren Sie die Methode und schreiben Sie die Funktionslogik in der VUE -Instanz.

So verwenden Sie Bootstrap in Vue So verwenden Sie Bootstrap in Vue Apr 07, 2025 pm 11:33 PM

Die Verwendung von Bootstrap in Vue.js ist in fünf Schritte unterteilt: Startstrap installieren. Bootstrap in main.js. Verwenden Sie die Bootstrap -Komponente direkt in der Vorlage. Optional: benutzerdefinierter Stil. Optional: Verwenden Sie Plug-Ins.

So verwenden Sie Watch in Vue So verwenden Sie Watch in Vue Apr 07, 2025 pm 11:36 PM

Mit der Watch -Option in Vue.js können Entwickler auf Änderungen in bestimmten Daten anhören. Wenn sich die Daten ändert, löst sich eine Rückruffunktion aus, um Aktualisierungsansichten oder andere Aufgaben auszuführen. Zu den Konfigurationsoptionen gehören unmittelbar, die festlegen, ob ein Rückruf sofort ausgeführt werden soll, und Deep, das feststellt, ob Änderungen an Objekten oder Arrays rekursiv anhören sollen.

So verweisen Sie auf die JS -Datei mit Vue.js So verweisen Sie auf die JS -Datei mit Vue.js Apr 07, 2025 pm 11:27 PM

Es gibt drei Möglichkeiten, sich auf JS -Dateien in Vue.js zu beziehen: Geben Sie den Pfad direkt mit dem & lt; Skript & gt an. Etikett;; Dynamischer Import mit dem montierten () Lebenszyklushaken; und importieren über die Vuex State Management Library.

Was bedeutet VUE Multi-Page-Entwicklung? Was bedeutet VUE Multi-Page-Entwicklung? Apr 07, 2025 pm 11:57 PM

VUE Multi-Page-Entwicklung ist eine Möglichkeit, Anwendungen mithilfe des Vue.js-Frameworks zu erstellen, in dem die Anwendung in separate Seiten unterteilt ist: Code-Wartung: Die Aufteilung der Anwendung in mehrere Seiten kann das Verwalten und Wartungsbereich erleichtern. Modularität: Jede Seite kann als separates Modul für eine einfache Wiederverwendung und den Austausch verwendet werden. Einfaches Routing: Die Navigation zwischen Seiten kann durch einfache Routing -Konfiguration verwaltet werden. SEO -Optimierung: Jede Seite hat eine eigene URL, die SEO hilft.

So kehren Sie von Vue zur vorherigen Seite zurück So kehren Sie von Vue zur vorherigen Seite zurück Apr 07, 2025 pm 11:30 PM

VUE.JS hat vier Methoden, um zur vorherigen Seite zurückzukehren: $ router.go (-1) $ router.back () verwendet & lt; Router-Link to = & quot;/& quot; Komponentenfenster.history.back () und die Methodenauswahl hängt von der Szene ab.

So fragen Sie die Version von Vue So fragen Sie die Version von Vue Apr 07, 2025 pm 11:24 PM

Sie können die Vue -Version mit Vue Devtools abfragen, um die Registerkarte VUE in der Konsole des Browsers anzuzeigen. Verwenden Sie NPM, um den Befehl "npm list -g vue" auszuführen. Suchen Sie das Vue -Element im Objekt "Abhängigkeiten" der Datei package.json. Führen Sie für Vue -CLI -Projekte den Befehl "Vue --version" aus. Überprüfen Sie die Versionsinformationen im & lt; Skript & gt; Tag in der HTML -Datei, die sich auf die VUE -Datei bezieht.

So verwenden Sie Funktionsabfangweserven So verwenden Sie Funktionsabfangweserven Apr 08, 2025 am 06:51 AM

Funktionsabfangen in VUE ist eine Technik, mit der die Häufigkeit, mit der eine Funktion eingerufen wird, innerhalb eines bestimmten Zeitraums aufgerufen wird und Leistungsprobleme verhindern. Die Implementierungsmethode lautet: Importieren Sie die Lodash -Bibliothek: importieren {dunounce} aus 'lodash'; Verwenden Sie die Dabounce -Funktion, um eine Intercept -Funktion zu erstellen: const dabouncedFunction = dunounce (() = & gt; { / logical /}, 500); Rufen Sie die Abfangfunktion auf und die Steuerfunktion wird höchstens einmal in 500 Millisekunden aufgerufen.

See all articles